我正在尝试从 csv 文件中读取逗号分隔的单词列表,并且在处理由 C 读取时出现在文件末尾的接缝随机字符时遇到问题。末尾的字符当我从列表中添加/删除单词时,文件似乎完全改变了。
这是文件中包含的内容:johnny,david,alan,rodney,bob,ronald,andrew,hola,goodbye
. 那是完全复制的,最后没有意外的空格或回车。
以下是程序读取的内容:
这是在文本中读取的代码:
char* name;
FILE *fp;
char *fcontent;
int wordCount = 0;
char delim = ',';
long fsize;
bool end = false;
char guessedLetters[26];
int guessNum = 0;
int lives = 0;
for (int i = 0; i < 26; i++) {
guessedLetters[i] = '\0';
}
fp = fopen(WORDS_FILENAME, "r");
if (fp == NULL) {
printf("Words File Exception: Exiting.");
return 1;
}
fseek(fp, 0L, SEEK_END);
fsize = ftell(fp);
fseek(fp, 0L, SEEK_SET);
fcontent = (char*)calloc(fsize, sizeof(char));
if (fcontent == NULL) {
printf("No words in file: Exiting.");
return 1;
}
fread(fcontent, sizeof(char), fsize, fp);
char *fcontent2 = malloc(strlen(fcontent + 1));
strcpy(fcontent2, fcontent);
fclose(fp);
单词被拆分成一个单词数组,流氓字符一直附加到最后一个单词的末尾,这在程序的后期造成了很多问题。
这是将字符串拆分为数组的代码wordArr
:
char wordArr[wordCount][15];
char *ptr2 = strtok(fcontent2, &delim);
int count = 0;
while (ptr2 != NULL) {
strcpy(wordArr[count], ptr2);
count++;
ptr2 = strtok(NULL, &delim);
}
也许如果不可能完全忽略读取的字符,那么可以在拆分过程中忽略它们?
谢谢,杰克。