0
파일에서 일부 문자열을 읽고 문자열 배열로 복사하려고합니다. 왜 세그멘테이션 오류가 발생하기 전에 파일의 첫 번째 문자열 만 제대로 읽는 지 이해할 수 없습니다. 파일의 각 문자열에는 최대 50 자까지 입력 할 수 있습니다.파일에서 문자열 읽기 및 배열로 복사 - C
...
int i = 0;
char s[50];
int N=0;
FILE *fp;
//Figures out how many strings are stored in the file
while(fgets(s, 50, fp)!=NULL){N++}
rewind(fp);
char *strings[N]; //This is the array where I want to store strings
for(i=0;i<N;i++){
fgets(s, 50, fp);
strcpy(strings[i], s);
printf("%s", s);
}
왜 배열에 문자열을 성공적으로 저장할 수 없습니까?
초기화되지 않은 포인터와 함께 'strcpy'를 사용할 수 없습니다.'strdup'를 사용하십시오 : strings [i] = strdup (s) ;' –
힌트 :'char * strings [N]'은 N 개의 포인터로 구성된 배열이지만 초기화 된 것은 하나도 없다. 각 포인터는 일부 미정의 메모리 위치를 가리 킵니다. –
@MichaelWalz : 고마워요! 그래서 strcpy 사용할 수 있지만 각'string [i]'포인터를 초기화해야합니다. fgets() 이후에'strings [i] = (char *) malloc (50 * sizeof (char)); '과 같은 것을 사용해야한다고 생각합니까? – davideAlbertini