如何在c中验证用户输入?

如何在c中验证用户输入?,c,C,我想知道你将如何在c中验证用户输入,我需要用户输入坐标,一个(1-8)中的整数被另一个(1-8)中的整数分隔,例如“1,1”。我想知道我是否可以使用strtok()或strtol()来实现这一点?如果输入格式是固定的,那么使用fgets()获取一行输入,然后sscanf()解析输入要比使用strtok()和strtol()简单得多 下面是一个验证用户是否在[1,8]范围内输入两个整数的示例。如果用户输入的值少于两个,或者值超出范围,或者如果在接受的值之后有额外的输入,则会提示用户输入另一对坐标

我想知道你将如何在c中验证用户输入,我需要用户输入坐标,一个(1-8)中的整数被另一个(1-8)中的整数分隔,例如“1,1”。我想知道我是否可以使用strtok()或strtol()来实现这一点?

如果输入格式是固定的,那么使用
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;
}

非常感谢