C语言创建树时scanf输入与赋值问题

C语言创建树的时候遇到的问题(创建的时候我用的是双亲表示法,数组来表示)
为什么他没有将father给赋值进去呢?而只是单单给了str
当我的进入第二次循环的时候,为什么str又变成了‘1’,求解!

img

img

img

输入:R -1
A 0
B 0
C 0
D 1
E 1
F 3
G 6
H 6
K 6

是%d啊,不是&d

去掉getchar()

这篇文章:C语言结构体通过 scanf初始化 也许有你想要的答案,你可以看看

在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。

//请今后要用
char c;
scanf("%c",&c);
//时,都改为
char s[2];
char c;
scanf("%1s",s);
c=s[0];
//自动跳过一个或多个空格或Tab字符或回车换行,读取下一个字符。