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