我正在执行一项任务,对文本文件内的列表中的名称进行排序。我正在使用 CodeBlocks v17.12。我要求代码读取文件中的名字(在本例中恰好是 Hamza),当它看到空格时应该停止。然而,一旦我在 CodeBlocks 中编译它,它就会输出: Hamza uyªn<■ ║kDu¡lDu``@
有人知道这个问题是什么吗?我不能把它放在那里,因为稍后我需要整理名字。
{
fPointerOne = fopen("DT265A.txt", "r");
fPointerTwo = fopen("DT265C.txt", "r");
fPointerThree = fopen("DT265B.txt", "r");
fPointerFour = fopen("DT8900.txt", "r");
fgets(firstNames, 11, fPointerOne);
for (i = 0; i < SIZE; i++) {
ClassGroup1.firstName[i] = firstNames[i];
if (firstNames[i] == ' ') {
goto PRINT;
}
}
PRINT:
printf("%s", ClassGroup1.firstName);
fclose(fPointerOne);
fclose(fPointerTwo);
fclose(fPointerThree);
fclose(fPointerFour);
return 0;
}
最佳答案
在循环中,您将所有字符复制到空格中,但切勿将终止字符“\0”写入 ClassGroup1.firstName。因此,当您打印时,您将打印名称后面的所有垃圾,直到内存中的第一个 0x00 字符。
此外,fgets 中的 11 可能应该是此代码片段中的 SIZE。中断比跳转更好。
关于c - 扫描名称和奇怪的字符串: Files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55678317/