我正在写一个简单的程序来读取一个文件,但是我在使用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
先谢谢你了。
1条答案
按热度按时间kmynzznz1#
它给你的核心文件(核心转储)包含有关何时以及为什么程序崩溃的信息。低水平学习有一个很好的视频。
https://www.youtube.com/watch?v=3T3ZDquDDVg