我想知道是否有人知道如何允许用户同时输入字符串(字符)和整数,并验证输入的每个字符。输入的一个示例是
"05JK1010"
。我上周才开始学习C语言所以我只弄清楚了这个
char studentID [20];
printf("Enter your student ID:\n");
scanf("%s", &studentID );
你已经很接近了,但我想我有更好的方法来做到这一点。 GNU libc 的
scanf
接受具有 %[
格式的范围,如下所示:
scanf("%19[0-9a-zA-Z]", studentID);
如果调整数组大小,则应使用不同的大小来代替
19
。这是为了确保 scanf
不会溢出缓冲区。
此外,如果
scanf
的参数之一的格式说明符为 %s
或 %[
,则通常不应获取该参数的地址。
如果您需要便携式解决方案,那么它就很拗口:
scanf("%19[0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]", studentID);
有关
scanf
的更多详细信息,请参阅我的帖子我可以使用什么来代替 scanf 进行输入转换?
C 没有允许同时输入整数和字符的功能。 就像 Joshua 上面评论的那样,字符只是表示为 ASCII 符号的整数。
如果您需要输入整数形式的数字,则必须从字符串中解析它们,并使用各种方法将它们转换为数值。
C 确实有一个将 ASCII 转换为整数的函数
atoi()
http://www.cplusplus.com/reference/cstdlib/atoi/
请注意,
atoi()
没有错误检查,这只是为了给您提供想法。