c - 格式指定类型 'char *' 但参数的类型为 'int' ,我在这里犯了什么错误?

标签 c debugging

我的代码有一些错误,有人可以帮忙调试吗?显然,获取我的 x 的 scanf 部分有问题。 说明如下:

该程序是一个简单介绍的C语言应用程序,涉及控制台显示、用户输入、字符串和循环。 编写将产生如下屏幕的代码:

首先,程序提示用户输入他或她的姓名。 然后,它会显示

Hello <user name>

接下来,它打印出一个包含 4 个选项的菜单:

  1. 两个整数相加
  2. 添加两个字符串
  3. 计算小于 10 或小于 11 的整数的阶乘
  4. 退出程序

对所有 4 个任务进行适当编码。

当任务完成时(当然不包括退出程序),菜单再次弹出并要求用户尝试另一个任务。重复此操作,直到按下 qQ。您可以使用 switch-caseif-else,但前者看起来更清晰。
即使您可能知道如何编写函数,也不要在此程序中使用函数。

#include <stdio.h>

char name[20],
     c[1000],
     d[1000],
     x;
int a, b, i, n,
    factorial = 1;

int main() {
    do {
        printf("\nPlease select one:\n");
        printf("**********MENU**********\n");
        printf("1 - add two integers\n");
        printf("2 - add two strings\n");
        printf("3 - compute factorial for integer less and including 10 or less than 11\n");
        printf("Q - quit program\n");
        printf("************************\n");

        scanf("%s", x);

        switch(x) {

        case '1':
            printf("Enter first integer:\n");
            scanf("%d", &a);
            printf("Enter second integer:\n");
            scanf("%d", &b);
            printf("%d + %d = %d\n", a, b, a + b);
            break;
        case '2':
            printf("Enter first string:\n");
            scanf("%s", c);
            printf("Enter second string:\n");
            scanf("%s", d);
            strcat(c, d);
            printf("%s\n", c);
            break;
        case '3':
            printf("Enter integer less than 11:\n");
            scanf("%d", &n);
            if (n > 0 && n < 11) {
                for(i = 1; i <= n; ++i) {
                    factorial *= i;
                }
                printf("factorial of %d is %d\n", n, factorial);
                break;
            }
            else {
                printf("error, please enter an integer\n");
            }

        case 'Q':
            printf("Program quitting...\n");
            break;

        }
    } while (x != 'Q');
}

最佳答案

x 在这里被声明为一个字符。

char name[20],
     c[1000],
     d[1000],
     x;

但是当扫描到x时,您使用%s,它用于字符串。

scanf("%s", &x); 

扫描字符的正确方法是scanf("%c",&x);

另外,不要忘记程序末尾的 import 语句和 return 0;

关于c - 格式指定类型 'char *' 但参数的类型为 'int' ,我在这里犯了什么错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53844390/

相关文章:

c - 错误 98 :Conflict with previous definition of x for attribute 'type'

c - 如何将一维数组从 fortran 传递到 c

c# - 是否可以在 DebuggerDisplay 中使用条件?

c - 尝试在调试期间进行不需要的附加

c - 使用 GDB : I crash (segfault). 我怎样才能看到导致它的代码行?

mysql - 如何在 SQL 脚本中使用过程?

C程序文件-io用户输入

我可以使用 C 创建苹果或安卓应用程序吗?

c - sys_schedule() 在 Minix 3.1.8 中做什么?

java - 在 java 中调试时检查数据