루프에서 getchar가()을 재현 I 성공적 한 각 캐릭터를 대체 출력에 를 입력을 복사하는 프로그램을 작성 수동 K & R 1-9
R 1.9
&을 K에 대한 답변을 재생하거나 하나의 공백으로 더 많은 공백.
내가 다음 코드는 다음
내가c=getchar()
는 동안 루프에 있기 때문에, 때마다 코드가 경우에를 통해 다음과 같은 완료 있다고 생각
#include <stdio.h>
int main(void)
{
int c;
int inspace;
inspace = 0;
while((c = getchar()) != EOF)
{
if(c == ' ')
{
if(inspace == 0)
{
inspace = 1;
putchar(c);
}
}
/* We haven't met 'else' yet, so we have to be a little clumsy */
if(c != ' ')
{
inspace = 0;
putchar(c);
}
}
return 0;
}
명령문을 입력하면 프로그램이 자동으로 사용자 입력을 요청합니다. 이 루프에서 퍼팅보다는 요구되는 자동 않도록
는 는하지만, 내 이해를 테스트하기 위해, 내가 수동으로 각 문장의 끝에
c=getchar()
을 넣어 원했고 그것은 나를 위해. 이것은 K & R의 저자가 K & R 초판의 16 페이지에있는 내용과 유사합니다. 나는 이것이 getchar()이 코드 전체에서 언제 호출되는지에 대한 나의 이해를 테스트 할 것이라고 생각한다. 그동안 루프에 넣어 반대로,
{
int c;
c=getchar();
while (c !=EOF) {
putchar(c);
c=getchar();
}
}
제작자가 C = getchar가를 (되풀이)
다음은 16 페이지의 코드이다.
이것은 각 관련 문장의 끝 부분에 getchar()을 수동으로 삽입한다는 목표를 달성하기 위해 수정 한 코드입니다.
#include <stdio.h>
main()
{
int a;
int b;
b=0;
a=getchar();
while(a!=EOF)
{
if(a==' ')
{
if(b==0)
{
putchar(a);
b=1;
a=getchar();
}
if(b==1)
{
a=getchar();
}
}
if(a!=' ')
{
putchar(a);
b=0;
a=getchar();
}
}
}
파일을 컴파일하고 실행할 때 결과는 다음과 같습니다. 제가
hello my name
입력하면 I가
hello
수신 제가
hello my name
(이것은 정확한 결과 수신
hello
입력하면 더욱있을 때 하나의 공백보다 성명서에서 공백의 수는 1로 줄어 듭니다.
는 이유는 무엇입니까 :
hello my name
나는
hello y ame
내 질문은 다음과 같다 나타납니다 내가 입력하면 각 단어 사이에 두 개의 공백)
는, 그러나이 있음을 유의하시기 바랍니다 공백 다음의 문자는 내 코드에서 잘립니다.
가 (이 코드는 과도하게 긴 난 단지 내가 책 K & R 1.9까지 배운 문법을 사용하고 있기 때문에 될 수있다)
? "이유는 무엇입니까 내 코드에 의해 잘릴 공백 다음 문자":
불필요한 코드를
를 제거 다음은 결과입니다. 질문이 너무 깁니다. 마지막 코드를 보여주고 그 질문을하십시오. 우리는 모든 배경 지식과 정보를 필요로하지 않습니다. 그것은 단지 질문을 모호하게하고 사람들이 관련없는 모든 것을 통과해야만 응답을하지 못하게합니다. – kaylum
조언 해 주셔서 감사합니다. 다음 번에해야 할 것입니다. –
과 상관없이 일부 마이크로 소프트 컴파일러가 허용하는 것 (예 : Visual Studio)은 읽기 쉽고 이해하기 쉽도록'main()'의 리턴 유형은 항상'int' – user3629249