1

我是 Linux 和代码块的新手。在构建下面的代码时,我收到此错误:

“分段错误进程返回 139 (0x8b)”

我知道这与记忆有关,但我找不到问题所在。在使用 Makefile 或在终端中单独编译文件时,我没有收到任何错误。

main接收 2 个参数(argv) ComputersInNet.txt - > argv[1] Simulation.txt -> argv[2]

而且我无法弄清楚如何使用代码块将这些文件添加到项目中,而且在 Windows(Visual Basic)中代码也可以完美运行。

我无法正确粘贴代码(5 个文件:2 .h 和 3 .cpp),您可以从下面的链接下载它们,包括我用作参数的两个 txt 文件。

http://depositfiles.com/files/cv2bwmz74

4

1 回答 1

4

发生代码片段问题,调用子程序Create_PC_List()main()创建计算机列表。

void Router :: Create_PC_List (char *fname) //Reads from file & creates list of computers
{
char C;
char* IPAD=NULL;
FILE* fp;
FILE* msg;
int counter=0;
fp = fopen (fname,"r"); //Reading from Argv parameter file - list of computers in the network
if(fp == NULL)
        cout << "Opening file failed: %s\n" << strerror(errno) << endl;
msg = fopen (fname, "r"); //Reading from Argv parameter file - list of computers in the network
    while((C=fgetc(fp)) != EOF) //Running trougth the file
{
    ...

输出:

Opening file failed: No such file or directory
followed  by segmentation fault.

我们可以看到fopen()failed with error "No such file or directory"。因此,您需要找到一种方法将三个文本文件添加到代码块中,并使其可用于fopen().

分段错误的第二个原因是提供给的 fpgetc()是一个FILE *包含NULL地址的指针,该地址不是有效的FILE对象。

于 2012-12-03T20:04:09.283 回答