공백으로 구분 된 단어 (문자열)가 포함 된 텍스트 파일이 있습니다. 문자열의 크기는 제한되지 않으며 단어의 개수도 아닙니다. 내가해야 할 일은 파일의 모든 단어를 목록에 넣는 것입니다. (목록이 잘 작동한다고 가정하십시오). 무제한 단어 크기 문제를 극복하는 방법을 알아낼 수 없습니다. 나는 이것을 시도 :무제한 단어 크기로 공백으로 구분 된 텍스트 파일을 읽는 중
FILE* f1;
f1 = fopen("file1.txt", "rt");
int a = 1;
char c = fgetc(f1);
while (c != ' '){
c = fgetc(f1);
a = a + 1;
}
char * word = " ";
fgets(word, a, f1);
printf("%s", word);
fclose(f1);
getchar();
내 텍스트 파일은 다음과 같습니다
내가 얻을 수 있었던 모든이 첫 번째 단어는 것을this is sparta
공지, 심지어 내가 얻을 때문에 내가 잘못 할 그 오류 :
Access violation writing location 0x00B36860.
나를 도와 줄 수있는 사람이 있습니까?
'남자 realloc'. –
당신이 알지 못했을 때 (윌리엄의 코멘트에 다소 쌓여있다) 당신은 또한 non-constable 포인터에 잘못 변경되지 않는 메모리 영역의 주소를 잘못 할당 한 다음 그것을 보내어'fgets '전화. – WhozCraig
이 할당의 열쇠는 "unbounded"입니다. C 언어에서는 물건을 저장하기 위해 메모리를 할당해야합니다.그러나 크기를 모르는 경우 어떻게 메모리를 할당하여 메모리를 확보 할 수 있습니까? 위안이라면 C 프로그래머들의 세대가 잘못되어 크래커 나 대본 제작자가 쉽게 사용할 수 있습니다. 배열의 일부 크기를 할당하고 (malloc) 얼마나 꽉 찼는지 추적하고 크기가 가득 차면 크기를 두 배로 재 할당 (realloc)하십시오. 작동시키면서 두 배가 확장 계획이 너무 공격적인지 여부에 대해 생각해보십시오. –