使用printf是完全正常的:
int dec = 3;
float n = 4.3232;
printf("%.*f", dec, n);
但是在scanf()中我想替换100
scanf(%100[^~], string)
有类似的东西:
int a = 100;
scanf(%[***somtehing goes here***][^~], a, string);
但我没有设法做到这一点。
不确定是否重复,如果是,我会删除该问题。
修改:已更换' \ n'与〜。
答案 0 :(得分:3)
答案 1 :(得分:2)
做第一次"传递"使用sprintf()
构建格式字符串,然后使用scanf()
:
char fmt[64];
const int a = 100;
sprintf(fmt, "%%%d[^\n]", a);
%
符号由sprintf()
解析为一个单元;它们使它在目标字符串中发出单个%
。%d
只是格式化(十进制)整数的常规代码,它会发出100
。结果是fmt
包含字符串"%100[^\n]"
(其中\n
实际上是指嵌入换行符。)
然后将fmt
与scanf()
:
const int got = scanf(fmt, string);
与往常一样,请务必在通话结束后检查got
的值,如果它不是1
,则表示scanf()
未能执行请求的转换。< / p>