使用while循环在C中进行数据验证 #包括 main() { 字符状态; printf(“状态符号\n”); printf(“----\n”); printf(“高级s\n”); printf(“Junior j\n”); 而(1) { printf(“请输入销售人员的状态:”); scanf(“%c”、&status); 如果(状态=='s'| |状态=='j') { 如果(状态=='s') { printf(“周薪为--$400\n”); 打破 } 其他的 { printf(“周薪为--275美元”); 打破 } } 其他的 { printf(“请输入有效的符号!\n”); } } }

使用while循环在C中进行数据验证 #包括 main() { 字符状态; printf(“状态符号\n”); printf(“----\n”); printf(“高级s\n”); printf(“Junior j\n”); 而(1) { printf(“请输入销售人员的状态:”); scanf(“%c”、&status); 如果(状态=='s'| |状态=='j') { 如果(状态=='s') { printf(“周薪为--$400\n”); 打破 } 其他的 { printf(“周薪为--275美元”); 打破 } } 其他的 { printf(“请输入有效的符号!\n”); } } },c,validation,C,Validation,输入无效数据时,此程序必须向用户请求有效数据。While循环用于验证数据,执行两次,以请求用户输入。为什么一开始就忽略scanf函数?如何解决这个问题 因为当您键入a时,您键入了2个字符。 因此,第一次扫描得到a,第二次扫描得到\n(回车) 您可以将scanf更改为2个字符,而不是1个字符 #include<stdio.h> main() { char status; printf("STATUS SYMBOL\n"); printf("------

输入无效数据时,此程序必须向用户请求有效数据。While循环用于验证数据,执行两次,以请求用户输入。为什么一开始就忽略scanf函数?如何解决这个问题

因为当您键入
a
时,您键入了2个字符。 因此,第一次扫描得到
a
,第二次扫描得到
\n
(回车)

您可以将scanf更改为2个字符,而不是1个字符

#include<stdio.h>
main()
{
    char status;
    printf("STATUS     SYMBOL\n");
    printf("------     ------\n");
    printf("Senior        s\n");
    printf("Junior        j\n");    
    while(1)
    {       
        printf("Please Enter the Salesperson's Status : ");
        scanf("%c",&status);
        if (status=='s' || status=='j')
        {
            if(status=='s')
            {
                printf("Weekly Salary is --- $400\n");
                break;
            }
            else
            {   
                printf("Weekly Salary is --- $275\n");
                break;
            }
        }
        else
        {
            printf("Please Enter a Valid Symbol!\n");

        }
    }
}

scanf(“%c”、&status)==>
scanf(“%c”,状态)(&status)
注意添加的空格。使用
%c”
跳过状态字符前的空格。第二个调用是读取字符后的换行符。始终检查
scanf
和其他可能遇到与程序执行相关的错误条件的函数的结果。甚至
scanf(“%c%*c”,&status)
scanf("%c%c", &status, &newline);