在Switch语句中使用字母

在Switch语句中使用字母,c,compiler-errors,char,switch-statement,warnings,C,Compiler Errors,Char,Switch Statement,Warnings,我尝试在switch语句中使用Y和N,但当我尝试编译它时,我得到了一个错误,比如“error:statement需要整数类型的表达式('char[0]”无效) 开关(xx){ " 我还收到一条警告“警告:指向整数转换的不兼容指针将'char[1]'传递给'char'[-Wint conversion]类型的参数” 苏哲哲贞(姓名,imya), }首先,如果您想将字母读入xx中,请不要使用数组,并且绝对不要使用大小为0的数组 其次,您的开关接收一个char[]而不是char 接下来,在案例中s使用

我尝试在switch语句中使用Y和N,但当我尝试编译它时,我得到了一个错误,比如“error:statement需要整数类型的表达式('char[0]”无效) 开关(xx){ "

我还收到一条警告“警告:指向整数转换的不兼容指针将'char[1]'传递给'char'[-Wint conversion]类型的参数” 苏哲哲贞(姓名,imya),


}

首先,如果您想将字母读入
xx
中,请不要使用数组,并且绝对不要使用大小为0的数组

其次,您的
开关
接收一个
char[]
而不是
char

接下来,在
案例中
s使用字符而不是字符串

此外,根据问题中的信息,
sucheZeichen
获取一个
char
作为第二个参数(或
int
),因此
xx
作为数组的相同问题也适用于
imya

另外,我将
\n
添加到
scanf
中,这样它就不会读取换行符

您的代码应该如下所示:

int main() {

    char name[200];

    printf("Please tell me your name:");
    fflush(stdin);
    scanf("%s", name);
    printf("%s has %i letters\n", name, langeZeichne(name));

    // frage

    int end = 0;
    char xx;

    char imya;

    do {
        fflush(stdin);
        printf("would you like to count a letter in %s (Y / N)?\n", name);
        scanf("%c\n", &xx);

        switch (xx) {
            case 'Y':
                printf("Please enter a letter\n");
                scanf("%c\n", &imya);
                sucheZeichen(name, imya);
                break;
            case 'N':
                printf("Have a nice Day!");
                end = 0;
                break;
            default:
                printf("Wrong input\n");
                break;

        }
    }while (end==0);

}

使用单引号。但是您还有一些问题,例如大小为零的数组、没有空间容纳
\0
的字符串、
fflush(stdin)
等等……您没有使用字母(字符)。您正在使用字符串。顺便说一句:
指向传递的整数转换的不兼容指针
:此警告几乎应始终被视为错误。您的编译器应该警告您。听一听,如果你没有看到任何东西,打开错误报告是错误的。(你不能有一个0事物的数组——这意味着什么?
scanf(“%c”,xx)是错误的。(好吧,它与您错误的
xx
声明相匹配,有点像,但它不是您想要的。)如果您希望
xx
成为一个字符,那么将其声明为一个:
char xx
。然后,当您在
switch
语句中使用它时,大小写标签也必须是字符:
'Y'
'N'
int main() {

    char name[200];

    printf("Please tell me your name:");
    fflush(stdin);
    scanf("%s", name);
    printf("%s has %i letters\n", name, langeZeichne(name));

    // frage

    int end = 0;
    char xx;

    char imya;

    do {
        fflush(stdin);
        printf("would you like to count a letter in %s (Y / N)?\n", name);
        scanf("%c\n", &xx);

        switch (xx) {
            case 'Y':
                printf("Please enter a letter\n");
                scanf("%c\n", &imya);
                sucheZeichen(name, imya);
                break;
            case 'N':
                printf("Have a nice Day!");
                end = 0;
                break;
            default:
                printf("Wrong input\n");
                break;

        }
    }while (end==0);

}