#include <stdio.h>
int main()
{
int i,q;
char c;
char line[1000];
for(i=0; (c=getchar())!= EOF; ++i){
line[i]=c;
if (c=='\n'){
for(q=i; line[q]!= ' '&& line[q]!= '\t' && line[q]!= '\r'; --q){
line[q]='\0';
}
printf("%s\n",line);
i=-1;
char line[]={0};
}
}
if((c=getchar())==EOF){
for(q=i; line[q]!= ' '&& line[q]!= '\t' && line[q]!= '\r'; --q){
line[q]='\0';
}
printf("%s",line);
}
return 0;
}
혹시 for문 안에서
char line[]={0};
라는 표현이 잘못된건가요? (배열을 초기화 하려는 의도)
잘못 됬다면 어떻게 고쳐야 되는건가요?
안녕하세요. 조교 이은헌입니다.
1. for(q=i; line[q]!= ' '&& line[q]!= '\t' && line[q]!= '\r'; --q)
for 구문 안의 조건이 잘못되었습니다.
2. for문 안에서 선언된 char line[]={0};는 for문 밖에서 선언된 char line[1000];과는 다른 변수입니다.
변수에는 scope라는 영향력을 끼칠 수 있는 범위가 존재합니다.
for 구문 안에서 line[]={0};이 아니라(물론 이렇게 초기화하는 방식 자체도 틀렸습니다) char line[]={0};으로 선언하면 밖에서 쓰던 line이라는 변수가 아니라 for안에서 새로운 char 변수 배열 line을 생성하겠다고 선언한 것입니다.