【发布时间】:2020-02-17 02:48:15
【问题描述】:
我有一个包含以下单词的文件:
Theendsherethiswillnotjaksdjlasdfjkl;asdjfklasdjfkl;asdfjl;
these
are
the
下面是我的代码:
int i = 0;
bool duplicateFound = false;
while(fgets(line,12,fp)){
for (int j = 0; j < i; j++){
if (strcmp(wordList[j], line) == 0){
duplicateFound = true;
printf("Duplicate Found on Line %d : %s\n", j, wordList[j]);
}
}
if (duplicateFound == false){
strcpy(wordList[i], line);
printf("%s", wordList[i]);
}
i++;*/
printf("%s", line);
}
我使用 line 来保存每个单词,以便以后检查它是否在数组中重复。 我想要它,这样该函数每行最多只能读取 12 个字符,但它会输出以下输出。
实际输出:
Theendsherethiswillnotjaksdjlasdfjkl;asdjfklasdjfkl;asdfjl;
these
are
the
预期输出:
Theendsheret
these
are
the
【问题讨论】:
-
最好贴出可编译的代码。
-
fgets(line, sizeof line, fp); line[12] = '\0'有什么问题? -
如果你想用 fgets 读取最多 12 个字符,那么你必须使用 13 作为缓冲区的长度(记住你必须为字符串末尾的 '\0' 留出空间。如果您想忽略一行 12 个字符之后的字符,那么您还需要检查缓冲区中的 '\n'。如果您没有看到它,那么您需要读取并跳过字符,直到您读取结尾行或文件的结尾。
-
有没有一种简单的方法可以在 12 之后丢弃其他字符?
-
@WilliamPursell 会丢弃之后的字符并移至下一行吗?