鱼C论坛

 找回密码
 立即注册
查看: 1892|回复: 1

输入句子出现问题

[复制链接]
发表于 2023-11-1 21:41:04 | 显示全部楼层 |阅读模式

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

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

x
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define NUM 5
  4. int main()
  5. {
  6.         char slogan[NUM][128];
  7.         long int length[NUM];
  8.         char str[128];
  9.         int i,max,ma=0,mi=0,min;

  10.         for(i = 0; i < 5 ;i++)
  11.         {
  12.         printf("请输入第%d句话:",i+1);
  13.         scanf("%s",slogan[i]);
  14.         getchar();
  15.         length[i]= strlen(slogan[i]);       
  16.         }
  17.        
  18.         max = length[0];
  19.         min = max;       
  20.        
  21.         printf("你输入了下面五句话:");

  22.         for (i = 0 ; i < 5 ; i++)
  23.         {
  24.                 if(length[i]>max)
  25.                 {
  26.                         ma = i;
  27.                         max =length[i];
  28.                 }
  29.                 if(length[i]< min)
  30.                 {
  31.                         mi = i;
  32.                         min = length[i];
  33.                 }
  34.         printf("%s",slogan[i]);
  35.         }

  36.         printf("其中最长的是:%s",slogan[ma]);
  37.         printf("其中最长的是:%s",slogan[mi]);

  38.         return 0;
  39. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-1 21:41:14 | 显示全部楼层
这段代码存在一个问题,即在使用scanf()函数获取输入时,只能获取到空格之前的内容,如果输入的句子中含有空格,则只能获取到空格之前的部分。这会导致输入的句子不完整,影响后续的操作。

解决方案:可以使用fgets()函数代替scanf()函数,这样可以获取完整的一行输入。

修改后的代码如下:

  1. #include <stdio.h>
  2. #include <string.h>
  3. #define NUM 5
  4. int main()
  5. {
  6.         char slogan[NUM][128];
  7.         long int length[NUM];
  8.         char str[128];
  9.         int i,max,ma=0,mi=0,min;

  10.         for(i = 0; i < 5 ;i++)
  11.         {
  12.         printf("请输入第%d句话:",i+1);
  13.         fgets(slogan[ i], 128, stdin);
  14.         length[ i]= strlen(slogan[ i]);        
  15.         }

  16.         max = length[0];
  17.         min = max;        

  18.         printf("你输入了下面五句话:");

  19.         for (i = 0 ; i < 5 ; i++)
  20.         {
  21.                 if(length[ i]>max)
  22.                 {
  23.                         ma = i;
  24.                         max =length[ i];
  25.                 }
  26.                 if(length[ i]< min)
  27.                 {
  28.                         mi = i;
  29.                         min = length[ i];
  30.                 }
  31.         printf("%s",slogan[ i]);
  32.         }

  33.         printf("其中最长的是:%s",slogan[ma]);
  34.         printf("其中最短的是:%s",slogan[mi]);

  35.         return 0;
  36. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 09:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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