使用scanf – > ANSI C的最大字符串长度

前端之家收集整理的这篇文章主要介绍了使用scanf – > ANSI C的最大字符串长度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有:
#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提供类似的东西?

原文链接:https://www.f2er.com/c/116861.html

猜你在找的C&C++相关文章