여러 공백을 하나의 공백으로 바꾸려고합니다.C에서 getchar() 함수로 고생
#include <stdio.h>
#include <stdlib.h>
#define MAXLINE 500
main() {
char text[MAXLINE];
int i;
for(i = 0; (text[i] = getchar()) != EOF && text[i] != 'x'; i++) {
if(text[i] == ' ')
i++;
while((text[i] = getchar()) != EOF && text[i] != 'x' && text[i] == ' ');
if(text[i] == EOF || text[i] == 'x')
break;
}
text[i] = '\0';
printf("\n\n-- Result --\n%s", text);
}
나는 enter
을 누른 후 getchar()
가 문자를 기대하고 있다는 것을 알고 있지만, 나는 사람들이 EOF
이 발견 될 때까지 전체 문자열을 얻기 위해 그것을 사용하는 방법을 여러 번 보았다. 이 예제에서조차도, 내가 while
루프를 주석 처리하면 작동합니다 (공백없이 한 단어를 쓰면 정확한 문자열을 얻습니다). 내가 원하는 것은 사람이 배열에 쓰는 모든 단일 문자를 넣는 것입니다. 이 경우에 getchar()
기능을 사용할 수 있습니까? 그렇다면이 코드가 작동하도록하려면이 코드를 변경해야합니까 (while
루프가 주석 처리되지 않은 경우) 일부 문자 만 인쇄되기 때문에 변경해야합니까? 내가 말했듯이, apple
또는 그와 비슷한 단어를 공백없이 그리고 while
루프없이 쓰면 작동한다.
'main()'은'int'를 반환해야합니다. 그리고 오버 플로우 ('i
Kninnug
. 현재 문제가 해결되면이를 해결할 것입니다. – Stein
'getchar()'은 매우 의사 소통적인 이름 임에도 불구하고'char'를 반환하지 않습니다 (http://linux.die.net/man/3/getchar) ('EOF'는 char에 맞지 않음). – unwind