2 dream  travel Dream__Travel 于 2016.04.27 19:27 提问

简单的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ㄒ)/~~

4个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.27 21:01
已采纳

每次进入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);
    }

}
CSDNXIAON
CSDNXIAON   2016.04.27 19:32

简单的C语言程序
c语言简单程序妙解
C语言初步;简单的算法及程序;
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

fk002008
fk002008   2016.04.27 19:34

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!