[₽] 2023-06-09 16:31 采纳率: 86.7%
浏览 45
已结题

这里scanf()和getchar()连用getchar()可以接收到' '吗

```

/*输入一段文字

输出

输入一段字符,以stop作为最后输入的字符串。

测试说明
样例输入:
My name is Amy
My name is Jane
stop
样例输出:
11 name
12 name
提示:
字符串长度不超过100。*/
#include<stdio.h>
#include<string.h>
int main( )
{
while(1)
{
int max=0,i;
char a[100]={0},s[100]={0};
scanf("%s",a);
if(getchar()=='\n'&&strcmp(a,"stop")!=0) {printf("%d %s\n",max,a);}
else if(strcmp(a,"stop")==0) {break;}
else
{
if(max<strlen(a))
{
max=strlen(a);
for(i=0;i<strlen(a);i++) {s[i]=a[i];}
}
}
}
return 0;
}```

  • 写回答

4条回答 默认 最新

  • qzjhjxj 2023-06-09 16:40
    关注

    用scanf("%s", a); 输入字符串,碰到空格即认为输入结束,所以想输入“My name is Amy” ,其实只读入了 “My“ 就结束了。题主代码这么改下,供参考:

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int  max = 0, i, lens = 0;             // 修改
        char a[100] = { 0 }, s[100] = { 0 };   // 修改
        while (1)
        {
            scanf("%s", a);
            if (strcmp(a, "stop") == 0)  break;
            lens += strlen(a);   // 修改
            if (max < strlen(a))
            {
                max = strlen(a);
                for (i = 0; i < strlen(a); i++) { s[i] = a[i]; }s[i] = '\0'; // 修改
            }
            if ((getchar()) == '\n') //&& strcmp(a, "stop") != 0) // 修改
            {
                printf("%d %s\n", lens, s); // 修改
                max = 0; lens = 0;
            }
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月17日
  • 已采纳回答 6月9日
  • 创建了问题 6月9日

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画