一行输入一个无符号整数,作为stdout输出。
将不符合这个形式的输入除去 并作为stderr输出。
输入例
1
2
3 4
5 6 7
8
输出例(stdout)
1
2
8
输出例(stderr)
3 4
5 6 7
不知道该怎么办。。。我们连stdout stderr是什么怎么控制都没学过
求大神解答
楼上大神写的挺好的,但是我发现一个问题,他的程序只是形似神不似。这个要判断当前输入行是否是无符号整数而不是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;
}
写了个楼主可以参考下
#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]);
}