我有:
#define MAX_STR_LEN 100
我想放入scanf模式,所以我可以控制字符串长度:
scanf("%100[^\n]s",sometext)
我试过了:
scanf("%MAX_STR_LEN[^\n]s",sometext) scanf("%"MAX_STR_LEN"[^\n]s",sometext) scanf("%",MAX_STR_LEN,"[^\n]s",sometext)
它没有用.我只想避免缓冲区溢出,因为“sometext”分配了malloc(MAX_STR_LEN)…
有任何想法吗?
解决方法
我对这些解决方案都不满意,所以我进一步研究,发现了GNU GCC宏
stringification
可以用作:
#define XSTR(A) STR(A) #define STR(A) #A #define MAX_STR_LEN 100 scanf("%"XSTR(MAX_STR_LEN)"[^\n]s",sometext)
也许VS2010提供类似的东西?