1
我想将用户输入流中的值赋给变量M和N.如果我指定了M和N类型的int,我可以让我的代码工作。但是,当我使用stdint.h指定它们为int16_t时,它将读取第一个值,但不会读取最后一个值。为什么是这样?为什么类型int使用sscanf但int16_t不能?
这里的代码工作就好了... ...
#include <stdio.h>
#include <stdint.h>
int main(void)
{
char str[10];
int M, N;
fgets(str, 10, stdin);
sscanf(str, "%d%d", &M, &N);
printf("M is: %d\n", M);
printf("N is: %d\n", N);
return 0;
}
这是行不通的。
#include <stdio.h>
#include <stdint.h>
int main(void)
{
char str[10];
int16_t M, N;
fgets(str, 10, stdin);
sscanf(str, "%d%d", &M, &N);
printf("M is: %d\n", M);
printf("N is: %d\n", N);
return 0;
}
[printf格式说明符for uint32 \ _t和size \ _t]的可能重复(http://stackoverflow.com/questions/3168275/printf-format-specifiers-for-uint32-t-and-size-t) –
tl; dr您没有使用正确的格式说明符。 –
如果您认为任何答案已解决您的问题,请考虑接受它(答案左侧的绿色复选标记)。这将向社区表明,该问题已得到解答,并将为您和回答者提供一些声誉。 – 2501