저는 k & r을 통해 작업 중이며, 문제 1-18에서 작업 중입니다. 각 입력 행에서 TRAILING 공백 및 탭을 제거하고 완전히 빈 줄을 삭제하는 프로그램을 작성하십시오. 내 생각은 각 줄을 읽고 공백 수를 계산하는 것입니다. 첫 번째 공백 인 경우 putchar을 사용하여 인쇄하십시오. 두 번째 공백이 있으면 공백을 다시 인쇄하고 공백을 0으로 재설정하십시오. 그런 다음 계속해서 공백을 제거하고 공백을 제거하십시오.뒤 공백을 제거하십시오.
나는 조금씩 조금씩 해보려고하기 때문에 지금은 다른 어떤 것을 인쇄해야합니다. 이 프로그램을 실행하면 터미널에서이 두 가지를 얻을 수 있습니다. if 문이나 else 문을 잘못 중첩하는 데 문제가 있다고 생각합니다. 이전에 일부 오류가있었습니다. 공백을 제거하는 논리가 올바른 방법일까요? 누군가가 코드를 수정하는 올바른 방향으로 나를 가리킬 수 있다면 나는 감사 할 것입니다.
#include <stdio.h>
main()
{
int c, i, spaces; /*c for input, i for counting*/
i = 0;
c = 0;
spaces = 0;
while ((c = getchar())!=EOF)
if(spaces = 0 && c == ' ')
++spaces;
putchar(c);
if(spaces >= 1)
spaces = 0;
else {
putchar(c);
}
}
로직의 나머지는 확인하지 않았지만이 if (spaces = 0 && c == '')는 아마 if (spaces == 0 && c == '') . '='vs'==' – Henrik
고마워, 어리석은 실수. 터미널에있는 이상한 물음표를 하나씩 줄입니다. – bigl
getchar()을 사용하여 전체 행을 읽는 대신이 문제를 해결해야합니까? – Scooter