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

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

C语言

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

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

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

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

我想要达到的结果

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

scanf("%[^\n]",a+i)这句话你理解的是能输入什麽呢?

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;
}

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