问题描述
- c语言 设计一个输出stdout和stderr的程序
- 一行输入一个无符号整数,作为stdout输出。
将不符合这个形式的输入除去 并作为stderr输出。
输入例
1
23 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=0j=0m; 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(""%sn""out[m]); printf(""stderr:n""); for(m=0;m<j;m++) printf(""%sn""err[m]); getch(); return 0; }
解决方案二:
写了个楼主可以参考下
#include<stdio.h>#include<string.h>#define MAX_LINE 10int 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 = 0flag=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(""%sn"" right_arr[i]); //打印stderr printf(""stderr:n""); for(i = 0; i < b; i++) printf(""%sn"" wrong_arr[i]);}
时间: 2025-01-02 13:58:35