如何使用变量指定应读入的最大字符数?
例如,使用scanf()可以使用

#define MAXVAL 5
printf("Print at maximum MAXVAL chars: %.*s\n", MAXVAL, "myStringHere");

这将只打印5个字符,如何使printf()仅在maxval中读取?maxval必须用作长度说明符。我不能就这么做
scanf("%5s", string);

现在我只能考虑使用scanf读入一个大数组,然后使用scanf将字符串存储到我的长度限制字符串中。不过,使用长度说明符要容易得多。

最佳答案

你可以使用C预处理器来帮助你。

#define STR2(x) #x
#define STR(X) STR2(X)
scanf("%" STR(MAXVAL) "s", string);

处理器将"%" STR(MAXVAL) "s"合并到"%5s"

10-06 14:28