鱼C论坛

 找回密码
 立即注册
查看: 1003|回复: 2

[已解决]scanf报错

[复制链接]
发表于 2023-11-5 11:25:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main()
{
        printf("please input first character:");
        char ch, c1, c2;
        scanf_s("%c", &ch);
        switch (ch)
        {
        case 'm':
        case 'M':printf("Monday\n"); break;
        case 'w':
        case 'W':printf("Wednesday\n"); break;
        case 'f':
        case 'F':printf("Friday\n"); break;
        case 't':
        case 'T':scanf_s("%c", &c1);
                switch (c1)
                {
                case 'h':printf("Thursday\n"); break;
                case 'u':printf("Tuesday\n"); break;
                default:printf("illegal input!\n"); break;
                }
        case 's':
        case 'S':sacnf_s("%c", &c2);
                switch (c2)
                {
                case 'a':printf("Saturday\n"); break;
                case 'u':printf("Sunday\n"); break;
                default:printf("illegal input!\n"); break;
                }
        default:printf("illegal input!\n"); break;
        }
        return 0;
}
报错:没有为格式字符串传递足够的参数,占位符和其参数预计 2 可变参数,但提供的却是 1 参数,缺失的可变参数 2 为格式字符串“%c”所需
最佳答案
2023-11-5 11:25:59
问题出在第34行和第40行的代码中。在这两行中,您使用了 sacnf_s 而不是 scanf_s 。这是一个拼写错误,应该使用 scanf_s 函数。

sacnf_s 应该被替换为 scanf_s ,以便正确读取输入字符并将其存储在相应的变量中。修复后的代码如下:
#include<stdio.h>
int main()
{
    printf("please input first character:");
    char ch, c1, c2;
    scanf_s("%c", &ch);
    switch (ch)
    {
    case 'm':
    case 'M':printf("Monday\n"); break;
    case 'w':
    case 'W':printf("Wednesday\n"); break;
    case 'f':
    case 'F':printf("Friday\n"); break;
    case 't':
    case 'T':scanf_s("%c", &c1);
        switch (c1)
        {
        case 'h':printf("Thursday\n"); break;
        case 'u':printf("Tuesday\n"); break;
        default:printf("illegal input!\n"); break;
        }
        break;
    case 's':
    case 'S':scanf_s("%c", &c2);
        switch (c2)
        {
        case 'a':printf("Saturday\n"); break;
        case 'u':printf("Sunday\n"); break;
        default:printf("illegal input!\n"); break;
        }
        break;
    default:printf("illegal input!\n"); break;
    }
    return 0;
}

修复后的代码将正确读取输入字符并输出相应的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-5 11:25:59 | 显示全部楼层    本楼为最佳答案   
问题出在第34行和第40行的代码中。在这两行中,您使用了 sacnf_s 而不是 scanf_s 。这是一个拼写错误,应该使用 scanf_s 函数。

sacnf_s 应该被替换为 scanf_s ,以便正确读取输入字符并将其存储在相应的变量中。修复后的代码如下:
#include<stdio.h>
int main()
{
    printf("please input first character:");
    char ch, c1, c2;
    scanf_s("%c", &ch);
    switch (ch)
    {
    case 'm':
    case 'M':printf("Monday\n"); break;
    case 'w':
    case 'W':printf("Wednesday\n"); break;
    case 'f':
    case 'F':printf("Friday\n"); break;
    case 't':
    case 'T':scanf_s("%c", &c1);
        switch (c1)
        {
        case 'h':printf("Thursday\n"); break;
        case 'u':printf("Tuesday\n"); break;
        default:printf("illegal input!\n"); break;
        }
        break;
    case 's':
    case 'S':scanf_s("%c", &c2);
        switch (c2)
        {
        case 'a':printf("Saturday\n"); break;
        case 'u':printf("Sunday\n"); break;
        default:printf("illegal input!\n"); break;
        }
        break;
    default:printf("illegal input!\n"); break;
    }
    return 0;
}

修复后的代码将正确读取输入字符并输出相应的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-5 11:26:47 | 显示全部楼层
scanf_s报错解决方案

在代码中,当我们使用scanf_s函数时,需要注意到该函数需要传入两个参数:要读取的格式字符串以及对应的变量地址。

在上述代码中,有两处出现了错误的scanf_s函数调用,分别是:
scanf_s("%c", &c1);
sacnf_s("%c", &c2);
这两处调用都缺失了一个必要的参数,即格式字符串"%c"所需的第二个参数。正确的调用方式应该是:
scanf_s("%c", &c1, 1);
scanf_s("%c", &c2, 1);
在这里,第三个参数1表示要读取的字符数,因为我们只需要读取一个字符,所以值为1。

修改后的完整代码如下:
#include <stdio.h>int main() {    printf("please input first character:");    char ch, c1, c2;    scanf_s("%c", &ch, 1);    switch (ch) {        case 'm':        case 'M':            printf("Monday\n");            break;        case 'w':        case 'W':            printf("Wednesday\n");            break;        case 'f':        case 'F':            printf("Friday\n");            break;        case 't':        case 'T':            scanf_s("%c", &c1, 1);            switch (c1) {                case 'h':                    printf("Thursday\n");                    break;                case 'u':                    printf("Tuesday\n");                    break;                default:                    printf("illegal input!\n");                    break;            }            break;        case 's':        case 'S':            scanf_s("%c", &c2, 1);            switch (c2) {                case 'a':                    printf("Saturday\n");                    break;                case 'u':                    printf("Sunday\n");                    break;                default:                    printf("illegal input!\n");                    break;            }            break;        default:            printf("illegal input!\n");            break;    }    return 0;}
希望以上内容能够解决你的问题。如果还有其他疑问,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 13:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表