c - 扫描名称和奇怪的字符串: Files

标签 c arrays file char

我正在执行一项任务,对文本文件内的列表中的名称进行排序。我正在使用 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/

相关文章:

c - glGetUniform 为事件制服返回 -1

c - 对 PTHREADS 过于偏执?

C char**,字符串数组空指针

c++ - 如何使用 C 修改文本数据文件中的值

c - 将输入文件中的单词输入到数组中

arrays - Swift:从 JSON 中解析数组

flash - 如何确定关联数组是否有键?

ios - 如何从嵌入在 Swift 中的 UITableView 中的文本字段中检索数据?

java - 如何在写入文件时压缩文件?

java - 读取文件时验证每个读取的字节数组缓冲区