为什么代码在此字符比较中没​​有产生任何结果?

Why does code yields no results on this char comparison?

晚上,对于初学者的问题,我很抱歉,但我必须编写一个代码,接收 7 种不同语言的称呼,与数据库进行比较,如果它们匹配,则告诉称呼使用的是哪种语言,如果不匹配, 告诉用户语言未知。

我想我理解了这个问题,但是我下面的代码没有显示任何结果,只是关闭了,有人能告诉我为什么吗?我知道这是非常粗略的编码,但找不到确切的错误。 (告诉我 scanf 中的多个变量的替代品也将不胜感激)。

#include<stdio.h>
#include<string.h>
int main(){
    char en[7][15];
    char id[7][15] = {"HELLO","HOLA","CIAO","HALLO","BOUNJOUR","ZDRAVSTVUJTE","."};
    char re[7][15] = {"INGLES","ESPANOL","ITALIANO","ALEMAN","FRANCES","RUSO","NLS"};
    scanf("%s %s %s %s %s %s %s",en[0],en[1],en[2],en[3],en[4],en[5],en[6]);
    int i = 0,j=0,m=1,k=0;
    while(i<8){
        for(j=0;j<7;j++){
            m=strcmp(en[i],id[j]);
            if(m==0 || j==6){
                strcpy(en[i],re[j]);
                k=i+1;
                printf("Caso %s: %s /n",k,en[i]);
                break;
            }
            }
            i++;
    }
    }

谢谢

问题出在您的 printf 函数上。您正在为 k 使用 %s 格式说明符而不是 %d。只需将该行更改为:

printf("Caso %d: %s \n",k,en[i]);

此外,while 条件 i<8 应更改为 i<7,因为有 7 个案例而不是 8 个。

至于 scanf,不要认为它有多大改进,但您也可以使用 for 循环。