【发布时间】:2020-03-22 00:53:53
【问题描述】:
我想知道是否有人知道如何允许用户在验证输入的每个字符的同时输入字符串(字符)和整数。输入的一个例子是"05JK1010"。我上周才开始学习 C 语言,所以我才弄明白这个
char studentID [20];
printf("Enter your student ID:\n");
scanf("%s", &studentID );
【问题讨论】:
-
字符只是用字母或符号表示的数字。字符“0”的十进制值为 48。这是一个 table,其中包含所有 ascii 字符及其数值。您可以使用此信息将整个输入作为字符串处理。
-
不清楚:在什么意义上输入
05JK1010既是字符串又是int输入?也许一些关于预期用途的额外信息会有所帮助。 -
如果您想在输入时验证每个字符或整数,则必须使用像 getch() 这样的函数进行循环,然后将该输入与保存的密钥进行比较,然后再继续来自用户的下一个值。我不相信 getch() 可以移植到所有平台。
-
不要养成坏习惯。验证检查返回使用的每个输入函数。使用
fgets()使用临时缓冲区读取整行,例如#define MAXC 1024然后char buf[MAXC]; fputs ("Enter ID: ", stdout); if (fgets (buf, MAXC, stdin) == NULL) { /* handle error */ }然后使用sscanf从buf解析您需要的值,例如if (sscanf (buf, "%19s", studentID) != 1) { /* handle error */ }; printf ("got ID: %s\n", studentID);。您也可以简单地使用一对指针从buf的开头到结尾挑选出您需要的内容。由你决定。 -
请参阅Determine number or character in textfile C,了解处理类似于您的 ID 的混合输入的方法。