gpt4 book ai didi

c - c 中命令行参数的段错误

转载 作者:行者123 更新时间:2023-11-30 21:17:51 24 4
gpt4 key购买 nike

我正在尝试读入文件并从该文件创建邻接列表,但是当我从命令行读入文件时出现段错误海湾合作委员会n00889642.c./a.out测试.txt段错误

为什么会发生这种情况?

main(int argc, char *argv[]){

int index;
int i;
char vertex1;
char vertex2;
FILE *f = fopen(argv[1], "r");
while (fscanf(f, " %c %c", vertex1, vertex2) != EOF)
{
for(i = 0; i<26; i = i + 1)
{
if(i == vertexCount)
{
InsertVertex(vertex1);
break;
}
if(strcmp(graph[i], vertex1) == 0)
{
break;
}
}
for(i=0; i<26; i = i + 1)
{
if(i == vertexCount)
InsertVertex(vertex2);
if(strcmp(graph[i], vertex2)== 0)
break;
}
}
fclose(f);
i = 1;
while(i < vertexCount)
{
insertEdge(graph[0].vertexKey, graph[i].vertexKey);
i= i + 1;
}
f = fopen(argv[1], "r");
while(fscanf(f, " %c %c", vertex1, vertex2) != EOF)
{
if(strcmp(graph[0], vertex1) != 0)
insertEdge(vertex1, vertex2);
}
fclose(f);

printGraph();
return 0;
}

这是我的代码的主要部分

最佳答案

几件事:

argv[1] - 如果仅传入一个参数,则应为 argv[0](应验证 argc)。

fscanf(f, " %c %c", vertex1, vertex2)

scanf 需要变量地址来保存值,因此应该是:

fscanf(f, " %c %c", &vertex1, &vertex2)

关于c - c 中命令行参数的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34098903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com