Я делаю программу, которая читает файл и подсчитывает, сколько слов имеет .txt. Программа работает нормально, проблема в том, что если txt имеет строку прерывания, она перестает читать, поэтому я должен поместить весь текст в одну строку. Насколько я знаю, проблема в fgets, которая перестает читать, когда она достигает EOF или новой строки. Мой вопрос: как я читаю свой текст даже с новыми строками? Нужно ли мне использовать fread()? Если да, я бы сделал? Ниже приведена часть кода, где я читаю .txt и помещаю в массив.C - Читает новую строку в .txt
char linha[10000];
int grandezaStrings = 100000;
int i = 0;
int contadorString = 0;
// This line reads the file.
fgets (linha, grandezaStrings,myFile);
// Used for special characters
setlocale (LC_ALL,"PORTUGUESE");
// Dynamic array to hold words
char ** strings = (char **)malloc(grandezaStrings * sizeof (char*));
char * pch;
for (i=0;i<grandezaStrings; i++){
strings[i] = (char *)malloc(100+1);
}
// Transfer all the words to my array.
i = 0;
pch = strtok(linha, " ,.!?:;()\n");
while (pch != NULL){
strlwr(pch);
strings[i] = pch;
contadorString++;
pch = strtok (NULL, " ,.!?:;()\n");
i++;
}
Большое спасибо!
'fgets (linha, grandezaStrings, myFile);' -> 'fgets (linha, sizeof linha, myFile);': 'grandezaStrings' не соответствует слишком большому. – BLUEPIXY
'strings [i] = pch;' -> 'strcpy (строки [i], pch);' – BLUEPIXY
fgets получает одну строку, вам нужно сделать (fgets (...)! = NULL), чтобы получить все файл – billpcs