定义要使用变量值读取的scanf字符串字母的值

时间:2014-08-26 11:19:26

标签: c scanf

使用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'与〜。

2 个答案:

答案 0 :(得分:3)

出于您的声明目的,最好这样做:

fgets(string, a, stdin);

http://linux.die.net/man/3/fgets

答案 1 :(得分:2)

做第一次"传递"使用sprintf()构建格式字符串,然后使用scanf()

char fmt[64];

const int a = 100;
sprintf(fmt, "%%%d[^\n]", a);
  • 前两个%符号由sprintf()解析为一个单元;它们使它在目标字符串中发出单个%
  • 第二个%d只是格式化(十进制)整数的常规代码,它会发出100

结果是fmt包含字符串"%100[^\n]"(其中\n实际上是指嵌入换行符。)

然后将fmtscanf()

一起使用
const int got = scanf(fmt, string);

与往常一样,请务必在通话结束后检查got的值,如果它不是1,则表示scanf()未能执行请求的转换。< / p>