Код, который я пытаюсь написать, должен читать текст из файла txt и разделяться на строки. Я пришел к следующему коду:Strtok Problems C (EOF characters?)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
FILE *fp;
int i=0;
char *words=NULL,*word=NULL,c;
if ((fp=fopen("monologue.txt","r"))==NULL){ /*Where monologue txt is a normal file with plain text*/
printf("Error Opening File\n");
exit(1);}
while ((c = fgetc(fp))!= EOF){
if (c=='\n'){ c = ' '; }
words = (char *)realloc(words, ++i*sizeof(char));
words[i-1]=c;}
word=strtok(words," ");
while(word!= NULL){
printf("%s\n",word);
word = strtok(NULL," ");}
exit(0);
}
Проблема заключается в том, что вывод, что я получаю не только текст (теперь в виде отдельных строк), но и некоторые символы, \ г (что возврат каретки), но также \ 241 \ r \ 002, что я не могу узнать, что это такое? Можете ли вы мне помочь?
твой файл сохранен как юникод? – Ulterior
Вы вызываете 'realloc()' для каждого входного символа, увеличивая размер буфера только на 1 байт. Скорее всего, это будет очень неэффективно. Удвоение размера буфера по мере необходимости будет быстрее. И вам нужно проверить, было ли 'realloc()' успешным или неудачным. –