gpt4 book ai didi

c - 尝试通过 #define 传递 scanf 读取的最大字符数

转载 作者:太空宇宙 更新时间:2023-11-04 05:48:08 24 4
gpt4 key购买 nike

我正在尝试将一个数字传递给 scanf,表示我想从输入流中读取多少个字符。但是,我无法让它工作。

当我只是将数字放在代码中时,我的代码可以工作,但我想通过 #define 传递数字以轻松更改它。

这个有效:

#include <stdio.h>

int main(void)
{
char tab[11];

printf("Podaj tekst: ");
scanf("%10[^\n]", tab);

printf("%s", tab);
}

这不起作用(它只获取第一个空白字符之前的字符):

#include <stdio.h>

#define size 10

int main(void)
{
char tab[size+1];

printf("Podaj tekst: ");
scanf("%size[^\n]", tab);

printf("%s", tab);
}

它不起作用对我来说似乎很奇怪。是否有任何解决方法来做我想做的事(除了使用 fgets)?

最佳答案

您可以使用预处理器 # 运算符将数字或其他文本转换为字符串。这需要使用两个宏,一个用于扩展 size 宏,另一个用于应用运算符:

#define size 10

#define StringifyHelper(x) #x
#define Stringify(x) StringifyHelper(x)

...

char tab[size+1];
scanf("%" Stringify(size) "[^\n]", tab);

关于c - 尝试通过 #define 传递 scanf 读取的最大字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54139418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com