|
몇가지 내용을 알고 있지 못하기 때문에 이해를 하지 못하는
것입니다.
while ((c = getchar()) != EOF)의 의미는
EOF가 입력될때까지 cnt = punc_count();문장을 반복해서 수행한다는 뜻입니다.
이 코드를 보면.. 우선 입력을 기다리고..(getchar)
입력이 되면.. EOF인지 비교해서.. EOF가 아니면..
아래문장을 수행하고..
다시 첨부터 반복합니다.
이해하셨죠?.
또다른 문제는
: #include <stdio.h>
: int punc_count(int c)
: {
: static int num = 0;
: if (c == '.' || c == '!' || c == '?')
: num++;
: return num;
: }
: int main(void)
: {
: int c, cnt;
: while ((c = getchar()) != EOF)
: cnt = punc_count();
: printf("Total No. of punctuations = %d\n", cnt);
: }
처럼 하거나..
함수 프로토 타입을 이용해서..
아래 처럼 해주어야 합니다.
: #include <stdio.h>
: int punc_count(int c); // 이곳을 주목..
: int main(void)
: {
: int c, cnt;
: while ((c = getchar()) != EOF)
: cnt = punc_count();
: printf("Total No. of punctuations = %d\n", cnt);
: }
: int punc_count(int c)
: {
: static int num = 0;
: if (c == '.' || c == '!' || c == '?')
: num++;
: return num;
: }
컴파일러가 컴파일을 하던중.. punc_count(); 만나게되면..
이것이 무엇인지 알수가 없기 때문입니다.
따라서 함수 자체를 punc_count를 호출하는 부분보다 먼저 코딩을
해놓거나.. 아니면 함수 프로토타입을 사용해서..
이러한 함수라는 것을 컴파일러에 알려주어야 합니다.
(이건 compiler시간에 1pass compiler, 2 pass compiler 등의 특성을
배울때 자세히 알게될겁니다. 그러나 미리 이정도는 알고 있어야합니다.)
보통 함수 프로토타입을 사용하는 방법을 씁니다.
마지막으로 cnt = punc_count(); 에서.. 파라미터가 빠져있습니다.
함수의 정의는 int punc_count(int c);로 파라미터를 받도록 만들어놓고..
호출시에는 파라미터를 넘겨주지 않으니 문제가 발생하지요..
이 내용을 이해하고 다시 수정하여 보기시 바랍니다.
그리고 자료형, 변수통용범위(스코프 법칙), 함수에 대해서 이해를 하고 있지
못하고 계신 상태니.. 이부분을 다시 공부하시 바랍니다.
: #include <stdio.h>
: int punc_count(int c);
: int main(void)
: {
: int c, cnt;
: while ((c = getchar()) != EOF)
: cnt = punc_count();
: printf("Total No. of punctuations = %d\n", cnt);
: }
: int punc_count(int c)
: {
: static int num = 0;
: if (c == '.' || c == '!' || c == '?')
: num++;
: return num;
: }
두근두근 님이 쓰신 글 :
: 초보가 지금 머리 아파 죽겠습니다...좀 갈쳐 주세염..
:
: #include <stdio.h>
: int main(void)
: {
: int c, cnt;
: while ((c = getchar()) != EOF)
: cnt = punc_count();
: printf("Total No. of punctuations = %d\n", cnt);
: }
: int punc_count(int c)
: {
: static int num = 0;
: if (c == '.' || c == '!' || c == '?')
: num++;
: return num;
: }
:
: 책을 보다가 예제가 이케 나와서 했는데 warning 이라고 하네여
:
: 아무리 뚤어지게 보고 있어도 몰겠구여..그리고 while문에여
:
: while((c = getchar()) != EOF) <- 이건 무슨 말인가염..;;
:
: 좀 갈쳐주세염...
|