鱼C论坛

 找回密码
 立即注册
查看: 1533|回复: 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 ,以便正确读取输入字符并将其存储在相应的变量中。修复后的代码如下:

  1. #include<stdio.h>
  2. int main()
  3. {
  4.     printf("please input first character:");
  5.     char ch, c1, c2;
  6.     scanf_s("%c", &ch);
  7.     switch (ch)
  8.     {
  9.     case 'm':
  10.     case 'M':printf("Monday\n"); break;
  11.     case 'w':
  12.     case 'W':printf("Wednesday\n"); break;
  13.     case 'f':
  14.     case 'F':printf("Friday\n"); break;
  15.     case 't':
  16.     case 'T':scanf_s("%c", &c1);
  17.         switch (c1)
  18.         {
  19.         case 'h':printf("Thursday\n"); break;
  20.         case 'u':printf("Tuesday\n"); break;
  21.         default:printf("illegal input!\n"); break;
  22.         }
  23.         break;
  24.     case 's':
  25.     case 'S':scanf_s("%c", &c2);
  26.         switch (c2)
  27.         {
  28.         case 'a':printf("Saturday\n"); break;
  29.         case 'u':printf("Sunday\n"); break;
  30.         default:printf("illegal input!\n"); break;
  31.         }
  32.         break;
  33.     default:printf("illegal input!\n"); break;
  34.     }
  35.     return 0;
  36. }
复制代码


修复后的代码将正确读取输入字符并输出相应的结果。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

sacnf_s 应该被替换为 scanf_s ,以便正确读取输入字符并将其存储在相应的变量中。修复后的代码如下:

  1. #include<stdio.h>
  2. int main()
  3. {
  4.     printf("please input first character:");
  5.     char ch, c1, c2;
  6.     scanf_s("%c", &ch);
  7.     switch (ch)
  8.     {
  9.     case 'm':
  10.     case 'M':printf("Monday\n"); break;
  11.     case 'w':
  12.     case 'W':printf("Wednesday\n"); break;
  13.     case 'f':
  14.     case 'F':printf("Friday\n"); break;
  15.     case 't':
  16.     case 'T':scanf_s("%c", &c1);
  17.         switch (c1)
  18.         {
  19.         case 'h':printf("Thursday\n"); break;
  20.         case 'u':printf("Tuesday\n"); break;
  21.         default:printf("illegal input!\n"); break;
  22.         }
  23.         break;
  24.     case 's':
  25.     case 'S':scanf_s("%c", &c2);
  26.         switch (c2)
  27.         {
  28.         case 'a':printf("Saturday\n"); break;
  29.         case 'u':printf("Sunday\n"); break;
  30.         default:printf("illegal input!\n"); break;
  31.         }
  32.         break;
  33.     default:printf("illegal input!\n"); break;
  34.     }
  35.     return 0;
  36. }
复制代码


修复后的代码将正确读取输入字符并输出相应的结果。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

在上述代码中,有两处出现了错误的scanf_s函数调用,分别是:
  1. scanf_s("%c", &c1);
复制代码
  1. sacnf_s("%c", &c2);
复制代码

这两处调用都缺失了一个必要的参数,即格式字符串"%c"所需的第二个参数。正确的调用方式应该是:
  1. scanf_s("%c", &c1, 1);
复制代码
  1. scanf_s("%c", &c2, 1);
复制代码

在这里,第三个参数1表示要读取的字符数,因为我们只需要读取一个字符,所以值为1。

修改后的完整代码如下:
  1. #include <stdio.h>
  2. int main() {
  3.     printf("please input first character:");
  4.     char ch, c1, c2;
  5.     scanf_s("%c", &ch, 1);
  6.     switch (ch) {
  7.         case 'm':
  8.         case 'M':
  9.             printf("Monday\n");
  10.             break;
  11.         case 'w':
  12.         case 'W':
  13.             printf("Wednesday\n");
  14.             break;
  15.         case 'f':
  16.         case 'F':
  17.             printf("Friday\n");
  18.             break;
  19.         case 't':
  20.         case 'T':
  21.             scanf_s("%c", &c1, 1);
  22.             switch (c1) {
  23.                 case 'h':
  24.                     printf("Thursday\n");
  25.                     break;
  26.                 case 'u':
  27.                     printf("Tuesday\n");
  28.                     break;
  29.                 default:
  30.                     printf("illegal input!\n");
  31.                     break;
  32.             }
  33.             break;
  34.         case 's':
  35.         case 'S':
  36.             scanf_s("%c", &c2, 1);
  37.             switch (c2) {
  38.                 case 'a':
  39.                     printf("Saturday\n");
  40.                     break;
  41.                 case 'u':
  42.                     printf("Sunday\n");
  43.                     break;
  44.                 default:
  45.                     printf("illegal input!\n");
  46.                     break;
  47.             }
  48.             break;
  49.         default:
  50.             printf("illegal input!\n");
  51.             break;
  52.     }
  53.     return 0;
  54. }
复制代码

希望以上内容能够解决你的问题。如果还有其他疑问,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-21 14:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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