C无法使用fgets读取文件

C unable to read from a file with fgets

我想从文件 .txt 读入 C 中的内存。

我把 txt 个文件和源文件放在同一个地方,所以 fileName 给出 small_addressbook.txt

当我 运行 在 eclipse 中(在 macbook 上)编写代码时,它总是打印 File not found,而在 Unix 中,我得到 segmentation fault.

我在 Unix 中尝试 运行ning gdb 并收到此错误报告:

Program received signal SIGSEGV, Segmentation fault.
__strncpy_sse2_unaligned ()
    at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:666
666     mov %rcx, (%rdi)

调用函数时使用绝对文件路径(例如:"C:/MyFolder/MyFile.txt")

UNIX gdb 命令对于检测代码的任何问题非常有帮助。

例如,如果我们用下面的命令编译程序:

gcc -ansi -Wall -pedantic test1.c test2.c ... -o test

得到了 segmentation fault.

然后我们使用gdb命令查看问题:

gdb test gdb run

errors/problems 的报告将 return。然后我们就可以在程序中使用bt命令进行回溯

在这个具体的post中,我们看到:

Program received signal SIGSEGV, Segmentation fault.
__strncpy_sse2_unaligned ()
    at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:666
666     mov %rcx, (%rdi)

SIGSEGV表示分割信号,特别是Segmentation fault.

然后__strncpy__se2__表示问题是关于一些值传递给方法strncpysse2表示段2,如源文件的顺序.c那个值正在传递给。

最后,unaligned 意味着此方法 strncpy 可能与其他一些为该值分配内存的方法冲突。

足够的信息来解决问题。