每次我在a之后设置b中的值,该值在a中重置为0。换句话说,随着代码的进行,无论我输入什么,它都将在第二个scanf函数之后始终为0。
编辑:我需要使用b作为文章的char类型,为了内存效率,所以我不能将b设置为int,但我需要在那里输入整数。
EDIT2:我需要在b中输入一个整数,例如输入:
1
2
从那时起,如果我
的printf( “%d”,一);
我得到0。
unsigned short a;
char b;
scanf("%hu",&a);
scanf("%d",&b);
使用char b;
和scanf("%d",&b);
,scanf会将sizeof (int)
字节写入b。
这会破坏其他记忆。
scanf("%hhd",&b);
只会向b写一个字节。
您正在使用错误的格式说明符
scanf("%d", &b);
它应该是
scanf("%c", &b);
但是,由于之前有一个scanf
语句,缓冲区中仍然有换行符,要过滤掉它,你可以使用
scanf(" %c", &b);
大多数格式说明符会自动过滤掉前导空格,但%c
和%[]
以及%n
都没有。
从错误中不清楚格式说明符是错误还是变量类型。
%d
需要int
:
int b;
然后,您应该检查scanf()
调用的返回值。这两个电话都返回1
吗?
(scanf()
返回分配的输入项目数。由于您的两个调用都有一个%...
,因此在两种情况下都必须返回1
。)