C中有没有办法同时接受字符串和整数输入? [已关闭]

问题描述 投票:0回答:2

我想知道是否有人知道如何允许用户同时输入字符串(字符)和整数,并验证输入的每个字符。输入的一个示例是

"05JK1010"
。我上周才开始学习C语言所以我只弄清楚了这个

char studentID [20];

printf("Enter your student ID:\n");
        scanf("%s", &studentID );
c string integer
2个回答
3
投票

你已经很接近了,但我想我有更好的方法来做到这一点。 GNU libc 的

scanf
接受具有
%[
格式的范围,如下所示:

scanf("%19[0-9a-zA-Z]", studentID);

如果调整数组大小,则应使用不同的大小来代替

19
。这是为了确保
scanf
不会溢出缓冲区。

此外,如果

scanf
的参数之一的格式说明符为
%s
%[
,则通常不应获取该参数的地址。

如果您需要便携式解决方案,那么它就很拗口:

scanf("%19[0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]", studentID);

有关

scanf
的更多详细信息,请参阅我的帖子我可以使用什么来代替 scanf 进行输入转换?


0
投票

C 没有允许同时输入整数和字符的功能。 就像 Joshua 上面评论的那样,字符只是表示为 ASCII 符号的整数。

如果您需要输入整数形式的数字,则必须从字符串中解析它们,并使用各种方法将它们转换为数值。

C 确实有一个将 ASCII 转换为整数的函数

atoi()

http://www.cplusplus.com/reference/cstdlib/atoi/

请注意,

atoi()
没有错误检查,这只是为了给您提供想法。

© www.soinside.com 2019 - 2024. All rights reserved.