사용자가 명령 셸에서 지정한 단어를 쓰려고했지만 어떤 이유로 프로그램이 즉시 read() 함수 다음에 종료되므로 main()의 텍스트가 "main2 \ n"에 있습니다. 결코 쓰여지지 않았다. 나는 약 1 시간 동안 나의 문제를 찾아 내려고 노력했는데 그것을 찾을 수없는 것처럼 보였다.왜 내 쓰기 메소드가 초기화되지 않았습니까?
# include <stdio.h>
void write_zin(const char* zin,int length_zin){
const char * runner =zin;
printf("out of loop\n");
while(runner!=(runner+length_zin)){
printf("%c",*runner);
runner++;
}
}
void read(char* zin,int NUMBER_LETTERS,int NUMBER_WORDS){
int i ;
char woord[NUMBER_LETTERS+1];
zin[0]='\0';
for(i =0;i<NUMBER_WORDS;i++){
printf("Give a word with %i letters\n",NUMBER_LETTERS);
scanf("%s",woord);
strcat(zin,woord);
strcat(zin,'\0');
}
strcat(zin,'\0');
}
int main(){
const int NUMBER_LETTERS = 5;
const int NUMBER_WORDS = 2;
char zin[(NUMBER_LETTERS+1)*NUMBER_WORDS];
printf("in main 1\n");
read(zin,NUMBER_LETTERS,NUMBER_WORDS);
printf("in main 2\n");
write_zin(zin,(NUMBER_LETTERS+1)*NUMBER_WORDS);
printf("in main3\n");
return 0;
}
당신이 디버거를 사용하여 시도? –
'strcat (zin, '\ 0');'-이게 무엇을 기대합니까? – ecatmur
@ Mitch, 아직 학교에서 디버거 사용 방법에 대해 생각해 보지 않았습니다. @ ecatmur, 각 단어 뒤에 널 문자를 추가하십시오. – BURNS