Search Results for 'programing/C언어'

3 POSTS

  1. 2012.10.30 Visual Studio 디버깅(Debugging)시에 인자값(argument) 설정하기
  2. 2012.10.27 fscanf, scanf 사용하기
  3. 2012.05.22 C언어 콤마(,) 연산자?

 

 

메뉴에서 프로젝트에 있는 속성을 클릭한다.(또는 Alt + F7)

 

 

구성 속성의 디버깅에서 명령인수에 argv 값을 넣어주면 된다.

위에 사진은 명령어 인수를 2개를 넣은 모습이다.

이것도 명령 실행할 때의 사용법과 유사하다.

'programing > C언어' 카테고리의 다른 글

fscanf, scanf 사용하기  (0) 2012.10.27
C언어 콤마(,) 연산자?  (0) 2012.05.22

fscanf, scanf 사용하기

Posted 2012. 10. 27. 12:01

scanf 계열의 함수를 사용하다 보면 특정 문자열을 받고 싶은데 scanf 는 띄어쓰기나 탭, 엔터 모두를 분할해서 받기 때문에 이용하기가 힘든 경우가 있고 이 부분을 처리하다 보면 코드가 쓸데없이 길어지거나 하드코딩으로 가는 경우가 많다.

 

예를들어 fscanf 를 사용할때 아래와 같은 문자열을 받는다고 할때

 

김 원영(탭)남자(탭)010 1111 2222(엔터)

 

scanf("%[^\t]\t%s\t%[^\n]\n", name, sex, phone); 

이렇게 받아주면 된다.

%[^\t] 는 탭 문자가 나오기 전까지 문자열로 받는다는 뜻이고 즉 띄어쓰기든 상관없이 탭까지 끊어 받는다는 뜻이다

 

만약 fscanf 의 경우 아래와 같은 데이터 파일에서 받는다고 가정했을 시

 

김 원영(탭)남자(탭)010 1111 2222(엔터)

김 김기(탭)여자(탭)010 1111 3333(엔터)

김 뭐시기(탭)남자(탭)010 1111 4444(엔터)

 

while( EOF != fscanf("%[^\t]\t%s\t%[^\n]\n", name, sex, phone) )

{

  ~~~~~~~~~~~~~~~~~~
}

이렇게 받아주면 된다.

 

EOF != ~~~~

는 fscanf가 파일의 끝을 만나면 EOF라는 상수값을 리턴해 주는데 EOF 라는게 나올 때 까지 while 문을 돌리게 된다.

 

그리고 마지막에 \n 이 들어가는 이유는 꽤 중요한데 만약 \n을 안써주게 되면 버퍼에 계속 \n이 남아있게 되어서 다음 받을때 영향을 주기 때문이다.

물론 \t 도 마찬가지

C언어 콤마(,) 연산자?

Posted 2012. 5. 22. 15:57
전에 하다가 자꾸 안돼서 짜잉났는데 과제낼때 질문한 내용 적으려면 적으라 해서 물어봤는데

답장이 왔다,, 근데 물어보기 잘한듯?

나의 코딩 습관은 반복문 같은건 가능한 주요 코드만 쓰고 반복문에 돌아가는 i ,j 같은 변수들은 가능한 줄이려고 한다.

예를들어
while(6 > i++)
for(i=0 , j=0 ; i<5 ; i++, j=j+2)
와 같은 코드를 즐겨쓴다.

하지만 이번에 과제하면서 귀찮은 마음에 역시 for문의 조건문에 콤마(,)를 어김없이 붙였다,,,

자꾸 에러가 나더라;; 그래서 for문을 잘 살펴봤더니 흐음,,,

자꾸 무한루프 돌았다. 쨋든 몇가지 실험하다가 뭔가 규칙을 잘 모르겠어서 질문했었다.

Re: [자료구조] HW#5

순서대로 연산을 수행하고 전체 연산 결과는 마지막 연산의 결과가 됨..
1,0
이라고 쓰면..
계산 결과는 0이됨.. 그래서 for문 반복이 안되었던 거고

0,1
이라고 쓰면
계산결과는 1... 그래서 무한 반복

아하.... 그래서 그때 이상했던 거구나,,,,

ex)

for( i = 0 , k = 4 ; i < 5 , k > 3 ; i++, k-- )
printf("TEST\n");

결과:
TEST

~~~이번엔 조건문의 k와 i 를 바꿔서~~~

for( i = 0 , k = 4 ; k > 3 , i < 5 ; i++, k-- )
printf("TEST\n");

결과:
TEST
TEST
TEST
TEST
TEST


오호,,, 유용하게 쓸일이 있긴 있을듯.
이제 고작 쬐금 한 실력가지고는 어디다 쓸지는 나중에 생각해 봐야겠다.