简单的C语言程序--小白求助
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    int N,n,i;
    char t[1000],s[1000];
    scanf("%d",&N);
    while(N--)
    {
        gets(t);
        scanf("%d",&n);
        for(i=0;i<n;i++)
        s[i] = t[i];
        s[n] = '\0';
        puts(s);
    }

}

这样写为什么程序运行的时候会出错啊/(ㄒoㄒ)/~~

c

3个回答

每次进入while循环的时候fflush(stdin)清空一下输入缓冲区,不然遗留的回车符会被gets读走

 #include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    int N,n,i;
    char t[1000],s[1000];
    scanf("%d",&N);

    while(N--)
    {
        fflush(stdin);
        gets(t);
        scanf("%d",&n);
        for(i=0;i<n;i++)
        s[i] = t[i];
        s[n] = '\0';
        puts(s);
    }

}

编译器问题吧
我在dev-c++中试验了没问题啊

Dream__Travel
Yellow_Jay 回复diven_li:我问了一下同学, 应该是输入流中换行符的问题
3 年多之前 回复
hnlxw
diven_li 回复Dream__Travel: 把数组初始化一下,试试
3 年多之前 回复
Dream__Travel
Yellow_Jay 我也用了DEV C++ 输入数字再输入字符数组就会自动报错啊
3 年多之前 回复

运行到哪一步出错?是不是你输入的n超过1000了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!