C语言在vs运行的报错

img

输入整数n,输入n本书的书号、书名和单价,输出所有单价在100元以上的图书的书名。

char a[10][10]; //加上 [10]
别的类似

scanf_s("%s", &a[i], 10); //加上10
别的类似

【以下回答由 GPT 生成】

该问题的报错原因是在使用scanf_s函数时,%s格式化字符串不正确,导致编译报错。我会给出更正后的代码并解释错误的原因。

#include<stdio.h>

int main(){
    char a[10];
    char b[10];
    int c[10];
    int n;
    int i;

    printf("输入整数n:");
    scanf_s("%d", &n);

    for(i=0;i<n;i++){
        printf("输入第%d本书书号:", i+1);
        scanf_s("%s", a, sizeof(a));  // 更正格式化字符串

        printf("输入第%d本书书名:", i+1);
        scanf_s("%s", b, sizeof(b));  // 更正格式化字符串

        printf("输入第%d本书单价:", i+1);
        scanf_s("%d", &c[i]);
    }

    printf("单价100元以上的图书的书名:\n");

    for(i=0;i<n;i++){
        if(c[i]>100){
            printf("%s\n", b);
        }
    }

    return 0;
}

解决方案的修改点是: 1. 在使用scanf_s函数时,将%s格式化字符串后的变量改为对应的数组名,即ab,并在后面添加对应数组的大小sizeof(a)sizeof(b)作为参数。 2. 在第二个printf中,打印b数组名即可,不需要使用下标。

这样修改后,代码就能正确编译和运行了。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^