프레젠테이션 에러...

veritas95 Reply 9 years 33 weeks ago
#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}; 라는 표현이 잘못된건가요? (배열을 초기화 하려는 의도) 잘못 됬다면 어떻게 고쳐야 되는건가요?
booksky Reply 9 years 33 weeks ago
안녕하세요. 조교 이은헌입니다. 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을 생성하겠다고 선언한 것입니다.