C 结构未存储值,扫描失败
我试图用一些输入运行下面的代码,当程序结束时,它显示C 结构未存储值,扫描失败,c,struct,scanf,C,Struct,Scanf,我试图用一些输入运行下面的代码,当程序结束时,它显示scanf失败,并且我的结构除了零之外没有保存任何内容。怎么了 代码: 输出: u: 0 v: 0 w: 0 u: 0 v: 0 w: 0 u: 0 v: 0 w: 0 u: 0 v: 0 w: 0 u: 0 v: 0 w: 0 u: 0 v: 0 w: 0 u: 0 v: 0 w: 0 u: 0 v: 0 w: 0 u: 0 v: 0 w: 0 u: 0 v: 0 w: 0 u: 0 v: 0 w: 0 u: 0 v: 0 w: 0 u: 0
scanf
失败,并且我的结构除了零之外没有保存任何内容。怎么了
代码:
输出:
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
编辑:我看到我的scanf条件是错误的,我已经更改了它,但我仍然不明白仅仅存储0(代码和输出已编辑)scanf(“%d%d\n%d”,&n,&c,&sede)
将在成功扫描时返回3
,当然3!=1
。scanf(“%d%d%d”、&vertex->u、&vertex->v、&vertex->w)的情况也一样。
顺序错误的代码:打印指针,然后使用顶点=顶点->下一步代码>
// Add
printf("u: %d v: %d w: %d\n", vertex->u, vertex->v, vertex->w);
vertex->next = malloc(sizeof(struct info));
vertex = vertex->next;
// printf("u: %d v: %d w: %d\n", vertex->u, vertex->v, vertex->w);
if(scanf(“%d%d\n%d”、&n、&c和&sede)!=1)
->if(scanf(“%d%d%d”、&n、&c和&sede)!=3)
?请阅读更多信息,尤其是关于它返回的内容。@chux我编辑了这个问题,也许我应该再次输入错误,对此表示抱歉。scanf返回错误的部分我已经知道了。我的问题是,它只存储0,正如你在输出中看到的那样。是的,我得到了,那么0呢?@Miguel;我会回答的,但是如果你问关于-1
,-2
,4
,5
,我不理解你的问题。前三个数字总是正的。唯一可能为负的是w,因为它是边的长度。为什么这会改变我的输出。我知道不会打印第一行,但无法将所有内容打印到0that@Miguel您的代码正在打印新分配的顶点的顶点->u
,而不是前面scanf()
中的顶点。0
的打印恰好是新分配的数据中的内容,它可能是任何int
-这是未定义的行为。
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
u: 0 v: 0 w: 0
// Add
printf("u: %d v: %d w: %d\n", vertex->u, vertex->v, vertex->w);
vertex->next = malloc(sizeof(struct info));
vertex = vertex->next;
// printf("u: %d v: %d w: %d\n", vertex->u, vertex->v, vertex->w);