godnpeter   3년 전

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()

{

char ans[81];

int i;

scanf("%d", &i);

getchar();

for (int k = 0; k < i; k++)

{

gets(ans);

getchar();

int n = 0;

int flag = 0;

int result = 0;

while (ans[n] != '\0')

{

if (ans[n] == 'O')

{

flag++;

result += flag;

}

else

flag = 0;

n++;

}

printf("%d\n", result);

}

return 0;

}

현재 이러한 코드를 사용하고 있는데 궁금한게 제가 gets 함수 뒤에 getchar를 넣은 이유는 gets함수에 문자배열을 입력시킨 다음에 \n을 하게 되는데 그 \n을 입력하기 위함입니다. 허나 막상 작동을 시켜보니 생각한대로 getchar에 \n이 들어가는 것이 아니라 또 다른 값을 입력받게 됩니다. 왜 그런가요?

djm03178   3년 전

http://en.cppreference.com/w/c...

"Reads stdin into the character array pointed to by str until a newline character is found or end-of-file occurs. A null character is written immediately after the last character read into the array. The newline character is discarded but not stored in the buffer."

즉, 개행 문자는 그대로 버려지고 버퍼에 남기지 않습니다.

댓글을 작성하려면 로그인해야 합니다.