首页 > 解决方案 > 从c中的键盘获取字符时出现多字符警告

问题描述

根据键盘输入的操作,想用switch结构做5个操作,但报错。我也尝试了 getchar 和 putchar 函数......

    int main()
    {
        char proc;
        int firstNum,secondNum,result;
        printf("* Multiplication\n/ Division\n+ Add \n- Minus\n%c Mode", '%');
        printf("\nEnter the first number: ");
        scanf("%d",&firstNum);
        printf("\nEnter the second number: ");
        scanf("%d",&secondNum);
        printf("\nEnter the process: ");
        scanf("%c",&proc);

        switch(proc) {
        case '*':
            result=firstNum*secondNum;
            printf ('%d',result);
            break;
        case '/':
            result=firstNum/secondNum;
            printf ('%d',result);
            break;
        case '+':
            result=firstNum+secondNum;
            printf ('%d',result);
            break;
        case '-':
            result=firstNum-secondNum;
            printf ('%d',result);
            break;
        case '%':
            result=firstNum%secondNum;
            printf ('%d',result);


    break;
    default:
        printf('Warning!');
        break;
}

警告:多字符字符常量 [-Wmultichar]

警告:传递 'printf' 的参数 1 使指针从整数而不进行强制转换 [-Wint-conversion]

标签: ccharstring-literalsgetcharputchar

解决方案


对于初学者使用

scanf(" %c",&proc);
       ^^^

(参见字符 & 之前的空白)而不是

scanf("%c",&proc);

并使用双引号在这样的语句中指定字符串文字

printf ( "%d",result);
         ^^^^

或这个

 printf("Warning!");
       ^^^      ^^^ 

而且您在程序末尾忘记了一个右括号。


推荐阅读