私が書いようとしているコードは、txtファイルからテキストを読み込んで文字列に分割することになっています。私は、次のコードになってきた。問題は、私が手出力は(今の別個の文字列など)のテキストだけでなく、(キャリッジリターンです)\ rとされている一部の文字だけではないということですStrtokの問題C(EOF文字?)
#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私は彼らが何かを見つけることができません?あなたは私を助けることができます?
がUnicodeとして保存されたファイルのですか? – Ulterior
各入力文字に対して 'realloc()'を呼び、バッファのサイズを1バイトだけ増やします。それは非常に非効率的である可能性が高いです。必要に応じてバッファサイズを2倍にする方が高速になります。 'realloc()'が成功したか失敗したかをチェックする必要があります。 –