le code que j'essaye d'écrire est censé lire le texte d'un fichier txt et le séparer en chaînes. Je suis venu au code suivant:Problèmes de Strtok C (caractères 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);
}
Le problème est que la sortie que je reçois est non seulement le texte (maintenant sous forme de chaînes séparées), mais aussi des personnages qui sont \ r (qui est de retour chariot), mais aussi \ 241 \ r \ 002 que je ne peux pas savoir ce qu'ils sont? Peux-tu m'aider?
est votre fichier enregistré en tant que unicode? – Ulterior
Vous appelez 'realloc()' pour chaque caractère d'entrée, augmentant la taille du tampon de 1 octet seulement. Cela risque d'être très inefficace. Doubler la taille de la mémoire tampon au besoin sera plus rapide. Et vous devez vérifier si 'realloc()' a réussi ou échoué. –