【发布时间】:2015-04-22 14:59:06
【问题描述】:
我正在尝试使用一些输入运行以下代码,当程序结束时,它显示scanf 失败并且我的结构除了零之外没有保存任何内容。怎么了?
代码:
#include <stdio.h>
#include <stdlib.h>
#define INF 2147483647;
typedef struct info{
int u, v, w;
struct info *next;
}*Vertex;
Vertex vertex;
int n, c, sede;
int *distarr;
int main(){
int i;
if(scanf("%d %d\n%d", &n, &c, &sede) < 0)
printf("first scanf failed\n");
distarr = malloc(sizeof(int) * (n + 1));
vertex = malloc(sizeof(struct info));
for(i=0; i<c; i++){
if(scanf("%d %d %d", &vertex->u, &vertex->v, &vertex->w) < 0)
printf("second scanf failed\n");
vertex->next = malloc(sizeof(struct info));
vertex = vertex->next;
printf("u: %d v: %d w: %d\n", vertex->u, vertex->v, vertex->w);
}
return 0;
}
输入:
10 15
6
6 2 5
6 7 -1
8 5 0
8 3 2
5 10 0
10 3 0
3 4 4
3 8 -1
2 5 4
2 10 5
2 3 1
2 9 3
1 6 -1
1 8 0
1 10 3
输出:
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 发生了什么(代码和输出已编辑)
【问题讨论】:
-
if(scanf("%d %d\n%d", &n, &c, &sede) != 1)->if(scanf("%d %d %d", &n, &c, &sede) != 3)? -
阅读更多关于
scanf的信息,尤其是它返回的内容。 -
@chux 我编辑了问题,也许我应该再次输入错误,对此感到抱歉。我已经知道 scanf 返回错误的部分。我的问题是它只存储 0,正如您在输出中看到的那样