我是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
发生代码片段问题,从main()
调用子例程Create_PC_List()
以创建计算机列表。
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: %sn" << 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()
失败并出现错误"No such file or directory"
。因此,您需要找到一种方法将三个文本文件添加到可用于fopen()
的代码块中。
分段错误的第二个原因是 fp 提供给getc()
是一个包含非有效 FILE 对象的 NULL 地址的FILE *
指针。