gsa*_*ras 4 c arrays string scanf c-preprocessor
通常我使用一个字符串大小的define,但是当我使用时scanf(),我想保护函数不要读取太多字符(并为null终止符保留空间).我想知道我是否可以使用我的定义,而不是硬编码的幻数...
#include <stdio.h>
#define MAXLEN 4
int main(void) {
char a[MAXLEN];
scanf("%3s", a); // Can I do that with 'MAXLEN' somehow?
}
Run Code Online (Sandbox Code Playgroud)
可能吗?如果有,怎么样?
使用define来stringify:
#define LENSTR_(x) #x
#define LENSTR(x) LENSTR_(x)
Run Code Online (Sandbox Code Playgroud)
然后你可以使用:
#define MAXLEN 3
char a[MAXLEN + 1];
scanf("%" LENSTR(MAXLEN) "s", a);
Run Code Online (Sandbox Code Playgroud)