这是用'c'编写的,并用gcc编译。我不知道你还需要知道什么。
我能拼出的最小的完整例子如下所示。变量“numoms”在到达第23行(scanf()之后)时丢失其值。
我被难住了。也许这与scanf()重写numoms的空间有关?
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
/*
*
*/
int main(int argc, char** argv) {
uint8_t numatoms;
uint8_t r;
char a[20];
do {
printf("NO. OF ATOMS?");
fflush(stdout);
scanf("%d", &numatoms);
printf("\r\n");
for(;;){
printf("value of numatoms is %u\r\n", numatoms);
printf("RAY?");
fflush(stdout);
scanf("%u", &r);
printf("value of numatoms is %u\r\n", numatoms);
if(r < 1)
break;
else {
printf("value of numatoms is %u\r\n", numatoms);
}
}
printf("CARE TO TRY AGAIN?");
fflush(stdout);
scanf("%s", a);
printf("\r\n");
} while (a[0] == 'y' || a[0] == 'Y');
return (EXIT_SUCCESS);
}
最佳答案
对于头<inttypes.h>
中定义的整数类型,应使用宏作为格式说明符。
来自C标准(7.8.1格式说明符宏)
1以下对象(如宏)中的每一个都扩展为一个字符
包含转换说明符的字符串文本,可能由修改
一种长度修饰符,适合在
转换相应的
整数类型。这些宏名的一般形式是PRI
(fprintf和fwprintf系列的字符串文本)或SCN
(fscanf和fwscanf系列的字符串文字),217)
后跟转换说明符,后跟对应的名称
7.20.1中类似的类型名。在这些名称中,N表示
7.20.1中所述类型的宽度。
用于转换说明符u
的无符号整数类型的宏的一般形式如下
SCNuN
这是一个演示程序
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
int main(void)
{
uint8_t x;
scanf( "%" SCNu8, &x );
printf( "x = %u\n", x );
return 0;
}