2 jiankeabcd jiankeabcd 于 2016.05.11 15:10 提问

c语言 设计一个输出stdout和stderr的程序

一行输入一个无符号整数,作为stdout输出。
将不符合这个形式的输入除去 并作为stderr输出。
输入例
1
2

3 4
5 6 7
8
输出例(stdout)
1
2
8
输出例(stderr)
3 4
5 6 7
不知道该怎么办。。。我们连stdout stderr是什么怎么控制都没学过
求大神解答

2个回答

herozhangbz
herozhangbz   2016.05.11 22:51
已采纳

楼上大神写的挺好的,但是我发现一个问题,他的程序只是形似神不似。这个要判断当前输入行是否是无符号整数而不是0-9的整数,当你输入12这个整数时他会分到err里面,其实并不是这样的。我稍微修改一下给楼主参考。

     int iszs(char a[])
    {
        int ck=1;
        int i=0;
        for(i;i<strlen(a);i++)
            if(a[i]==' ')
            {
                ck=0;
                break;
            }
        return ck;
    };
        int main()
    {
    char out[10][10];
    char err[10][10];
    char buf[10];
    char str[10];
    int i=0,j=0,m;
    while(gets(buf))
    {
        if(iszs(buf))
        {
            strcpy(out[i], buf);
            i++;
        }else
        {
            strcpy(err[j], buf);
            j++;
        }
    }
    printf("stdout:\n");
    for(m=0;m<i;m++)
        printf("%s\n",out[m]);
    printf("stderr:\n");
    for(m=0;m<j;m++)
        printf("%s\n",err[m]);
        getch();
        return 0;
    }
qq423399099
qq423399099   Ds   Rxr 2016.05.11 16:36

写了个楼主可以参考下

 #include<stdio.h>
#include<string.h>

#define MAX_LINE 10

int main()
{
    char right_arr[MAX_LINE][32],wrong_arr[MAX_LINE][32];
    int i, flag, a = 0, b = 0;
    char buffer[32];
    while(gets(buffer))
    {
        for(i = 0,flag=1; i < strlen(buffer); i++)
        {
            if(buffer[i] <= '0' || buffer[i] >= '9')
            {
                flag = 0;
                break;
            }   
        }
        if(flag)
            strcpy(right_arr[a++], buffer);
        else
            strcpy(wrong_arr[b++], buffer);

    }

    //打印stdout
    printf("stdout:\n");
    for(i = 0; i < a; i++)
        printf("%s\n", right_arr[i]);

    //打印stderr
    printf("stderr:\n");
    for(i = 0; i < b; i++)
        printf("%s\n", wrong_arr[i]);
}

图片说明

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