怒浪狂澜 2021-12-10 19:52 采纳率: 100%
浏览 15
已结题

我这个基本功能可以实现但是,我必须输入两个\n才会执行printf内容

问题遇到的现象和发生背景

C语言

问题相关代码,请勿粘贴截图

scanf("%d",&n);
for(i=0;getchar(),scanf("%[^\n]",a+i),i<n;i++);

运行结果及报错内容
我的解答思路和尝试过的方法

我试过将getchar去掉变到scanf,前加\n后,但是不行

我想要达到的结果

输入完数据后直接按回车就行

  • 写回答

3条回答 默认 最新

  • 关注

    for(i=0;getchar(),scanf("%[^\n]",a+i),i<n;i++);
    你这样是每次循环都先执行getchar()和scanf("%[^\n]",a+i) 再判断i<n。
    getchar()应该只在scanf("%d",&n);之后执行一次
    scanf("%[^\n]",a+i) 要放循环体中,要让先判断i<n再执行scanf("%[^\n]",a+i)
    否则最后判断i<n不成立时也会多执行一次scanf("%[^\n]",a+i)

    改成这样

    #include <stdio.h>
    
    int main()
    {
        int i,n;
        char a[100] = {0};
        scanf("%d",&n);
        getchar();
        for(i=0;i<n;i++) {
            scanf("%[^\n]",a+i);
        }
        a[i] =  '\0';
        printf("%s", a);
        return 0;
    }
    

    如有帮助,望采纳!谢谢!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月1日
  • 已采纳回答 3月24日
  • 创建了问题 12月10日

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真