段故障(核心转储)C

ehxuflar  于 2023-06-21  发布在  其他
关注(0)|答案(1)|浏览(84)

我正在写一个简单的程序来读取一个文件,但是我在使用fscanf阅读文件时遇到了问题。我已经保证了变量char在文件中的每一行都有足够的空间,但我不知道为什么我一直有这个错误。
每行包含图中节点的信息,第一个数字是节点的id,下一个是马内如何与它连接,最多16个。
这是我写的代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

#define MAXPROC 16

struct task{
 int valid;
 int next[MAXPROC];
 int id;
};

int main(int argc, char *argv[])
{
 struct task tasks[MAXPROC];

 FILE *grafo;
 if(argc < 1)
 {
     fprintf(stderr, "Need file name to start \n");
     exit(EXIT_FAILURE);
 }

 if((grafo = fopen(argv[1], "r"))!= NULL)
 {
     fprintf (stderr, "Could not open file \n");
     exit (EXIT_FAILURE);
 }

 char line [MAXPROC+19]; 
  
 while((fscanf(grafo,"%s",line))!= EOF )
 {
     printf("%s", line);
 }

 fclose(grafo);
 return 0;
}

我在MAXPROC上加19,因为我需要空间来存储id、逗号和连接的节点数。
我知道我可以使用malloc将内存分配给char,并使用getc逐个阅读char行,但我想保持简单。
这是我正在阅读的文件中包含的信息:

0,0
1,1,0
2,1,0
3,1,0
4,2,1,5
5,2,2,3

先谢谢你了。

kmynzznz

kmynzznz1#

它给你的核心文件(核心转储)包含有关何时以及为什么程序崩溃的信息。低水平学习有一个很好的视频。
https://www.youtube.com/watch?v=3T3ZDquDDVg

相关问题