다음은 사용자가 알 수없는 단어 수를 입력 할 때까지 'E'
이 입력 될 때까지 프로그램이 중지하고 입력 한 단어를 모두 인쇄해야하는 코드입니다. 그러나이 프로그램을 실행하면 세그먼트 화 오류가 발생합니다. 내가 가져서는 안되는 기억을 접 했니?배열 단어를 인쇄 할 때 세그먼테이션 오류가 발생합니다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CAPACITY 10
#define NUM_OF_WORDS 10
int main(void)
{
int num_words = 10;
char *word= malloc(CAPACITY*sizeof(char));
char **w=(char **) malloc(num_words*sizeof(char));
int i;
for(i = 0 ; scanf("%s", word)==1; ++i)
{
if(*word == 'E')
break;
if(i == num_words-1)
w = (char **)realloc(w, (num_words *=2) * sizeof(char));
w[i] =(char *) malloc(strlen(word)+1 * sizeof(char));
strcpy(w[i], word);
}
int x = 0;
for(x = 0 ; x<num_words ; x++)
printf("%s", w[x]);
return 0;
}
이 무엇 입력을 충돌하게, 어떤 줄에 : 나는 당신이 사용하는 더 나을 거라고 생각? –
@ 존 틴크가 옳다. "세분화 오류가 발생했습니다."테스트 한 결과 알지 못해서별로 도움이되지 않습니까? 즉시 충돌합니까? 특정 입력 후? 디버거에서 실행 했습니까? – abelenky
데이터를 입력하지 못하고 프로그램이 어떤 것을 출력하려고하면 i seg를 받았습니다. 'printf'' for for '루프에서 에러 –