【问题标题】:limiting the number of chars scanf will read using a define value [duplicate]使用定义值限制scanf将读取的字符数[重复]
【发布时间】:2018-03-04 14:55:41
【问题描述】:

我想限制 scanf 命令使用定义值获得的字符数。 以下代码运行良好

scanf("%20s",&stud->student_name);

但后来我尝试了那个(MAXNAMELEN 被拒绝为 20)

scanf("%MAXNAMELENs",&stud->student_name);

它没有工作。 我怎么能只使用 scanf 做到这一点?

【问题讨论】:

  • 您可以先使用sprintf 生成格式字符串,或者(更好)使用fgets
  • 您总是可以将#define MAXNAMELENFORMATSTRING "%20s" 作为一个非常简单的选项。

标签: c input scanf


【解决方案1】:

一对defines 允许对另一个define 进行字符串化

#define MAXNAMELEN 20
#define LENSTR_(x) #x
#define LENSTR(x) LENSTR_(x)

用作

char str[MAXNAMELEN + 1] = "";
result = scanf ( "%"LENSTR(MAXNAMELEN)"s", str);

【讨论】:

    猜你喜欢
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2012-03-26
    • 2019-01-26
    • 1970-01-01
    相关资源
    最近更新 更多