定义的字符串里变成了多个“烫”


int findname()
{
    char findn[20];
    printf("请输入要查询的名字:");
    scanf("%s",&findn[20]);

    for (i = 0; i < max; i++)
    {
        printf("00");
        if (strcmp(stu[i].name, findn) == 0)
        {
            printf("********************************************************************************************************************\n");
            printf("学号%s  姓名%s  性别%s  年龄%d  班级%s  高数成绩%d  大英成绩%d  专业课成绩%d  手机号%s  总成绩%d\n",
                stu[i].xuehao, stu[i].name, stu[i].sex, stu[i].age, stu[i].class, stu[i].mathgrades, stu[i].englishgrades, stu[i].Majorcourse, stu[i].phonenum, stu[i].sum);
            printf("\n");
            getch();
            return i;
        }

    }
    
    return -1;
}

findn里面变成了 烫 怎么办呀

img

scanf函数的使用有问题,里面的& findn[20]修改为& findn[0]或者findn

数组要在函数外定义,或初始化,不然会有随机数据在里面

第6行: scanf("%s",&findn[20]); 应修改为: scanf("%s",findn);


    char findn[20];
    memset(findn,0x00,sizeof(findn));//初始化
    printf("请输入要查询的名字:");
    scanf("%s",&findn);//输入地址从0开始

烫烫烫 一般是 编码问题 或者未初始化内存的乱码问题

char findn[20] = {0}; // 可以养成习惯初始化
printf("请输入要查询的名字:");
scanf("%s", findn); // 去掉 & 和 [20]