如何在c中验证用户输入?
我想知道你将如何在c中验证用户输入,我需要用户输入坐标,一个(1-8)中的整数被另一个(1-8)中的整数分隔,例如“1,1”。我想知道我是否可以使用strtok()或strtol()来实现这一点?如果输入格式是固定的,那么使用如何在c中验证用户输入?,c,C,我想知道你将如何在c中验证用户输入,我需要用户输入坐标,一个(1-8)中的整数被另一个(1-8)中的整数分隔,例如“1,1”。我想知道我是否可以使用strtok()或strtol()来实现这一点?如果输入格式是固定的,那么使用fgets()获取一行输入,然后sscanf()解析输入要比使用strtok()和strtol()简单得多 下面是一个验证用户是否在[1,8]范围内输入两个整数的示例。如果用户输入的值少于两个,或者值超出范围,或者如果在接受的值之后有额外的输入,则会提示用户输入另一对坐标
fgets()
获取一行输入,然后sscanf()
解析输入要比使用strtok()
和strtol()
简单得多
下面是一个验证用户是否在[1,8]范围内输入两个整数的示例。如果用户输入的值少于两个,或者值超出范围,或者如果在接受的值之后有额外的输入,则会提示用户输入另一对坐标
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char buffer[100];
int x, y;
/* sscanf() method: input must be comma-separated, with optional spaces */
printf("Enter a pair of coordinates (x, y): ");
if (fgets(buffer, sizeof buffer, stdin) == NULL) {
perror("Input error");
exit(EXIT_FAILURE);
}
int ret_val;
char end;
while ((ret_val = sscanf(buffer, "%d , %d%c", &x, &y, &end)) != 3
|| x < 1
|| x > 8
|| y < 1
|| y > 8
|| end != '\n') {
printf("Please enter two coordinates (x, y) in the range [1, 8]: ");
if (fgets(buffer, sizeof buffer, stdin) == NULL) {
perror("Input error");
exit(EXIT_FAILURE);
}
}
printf("You entered (%d, %d).\n", x, y);
return 0;
}
#包括
#包括
内部主(空)
{
字符缓冲区[100];
int x,y;
/*sscanf()方法:输入必须用逗号分隔,并带有可选空格*/
printf(“输入一对坐标(x,y):”;
if(fgets(buffer,sizeof buffer,stdin)=NULL){
perror(“输入错误”);
退出(退出失败);
}
国际检索;
焦端;
而((返回值=sscanf(缓冲区,%d,%d%c,&x,&y,&end))!=3
||x<1
||x>8
||y<1
||y>8
||结束!='\n'){
printf(“请在[1,8]:”范围内输入两个坐标(x,y);
if(fgets(buffer,sizeof buffer,stdin)=NULL){
perror(“输入错误”);
退出(退出失败);
}
}
printf(“您输入了(%d,%d)。\n”,x,y);
返回0;
}
非常感谢