В настоящее время я пытаюсь написать функцию, которая сканирует слова из файла словаря. Он отлично работает в отладчике, но когда я его компилирую и запускаю, он падает после сканирования пяти слов. Вот мой код:Проблема со сканированием в словах из файла (в C)
char** readDictionary(FILE *ifp, int size){
int i;
char** dictionary;
char buffer[21];
dictionary = malloc(sizeof(char*) * size);
if(dictionary == NULL){
printf("dictionary allocation ERROR");
return NULL;
}
for(i=0; i<size; i++){
fscanf(ifp, "%s", buffer);
printf("%s\n", buffer); //debugging statement
dictionary[i] = malloc(sizeof(char) * strlen(buffer));
strcpy(dictionary[i], buffer);
}
return dictionary;
}
В отладчике все слова сканируются должным образом. Когда я бегу без отладчика, я рушился после пятого слова.
вот список моих первых слов (опять же, он выходит из строя после того, как трубкозубов): aahing ахи AALS Aardvark трубкозубов протел aardwolves
Я не знаю, почему это могло произойти. Пожалуйста помоги.
Проверьте значение 'fscanf()' return. Не используйте 'sizeof (char)' это просто '1' и всегда будет, также вам нужен завершающий * null * байт. –
Причина такой работы в отладчике заключается в том, что отладочная версия программы часто имеет запаздывающие блоки памяти, поэтому забывание \ 0 может показаться сработавшим. –