|
发表于 2023-11-1 21:41:14
|
显示全部楼层
这段代码存在一个问题,即在使用scanf()函数获取输入时,只能获取到空格之前的内容,如果输入的句子中含有空格,则只能获取到空格之前的部分。这会导致输入的句子不完整,影响后续的操作。
解决方案:可以使用fgets()函数代替scanf()函数,这样可以获取完整的一行输入。
修改后的代码如下:
- #include <stdio.h>
- #include <string.h>
- #define NUM 5
- int main()
- {
- char slogan[NUM][128];
- long int length[NUM];
- char str[128];
- int i,max,ma=0,mi=0,min;
- for(i = 0; i < 5 ;i++)
- {
- printf("请输入第%d句话:",i+1);
- fgets(slogan[ i], 128, stdin);
- length[ i]= strlen(slogan[ i]);
- }
- max = length[0];
- min = max;
- printf("你输入了下面五句话:");
- for (i = 0 ; i < 5 ; i++)
- {
- if(length[ i]>max)
- {
- ma = i;
- max =length[ i];
- }
- if(length[ i]< min)
- {
- mi = i;
- min = length[ i];
- }
- printf("%s",slogan[ i]);
- }
- printf("其中最长的是:%s",slogan[ma]);
- printf("其中最短的是:%s",slogan[mi]);
- return 0;
- }
复制代码 |
|