从标准输入行读取输入行并在标准输出中打印这些输入行
2015-03-16 14:42
267 查看
#include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX_COLS 20 //所处理的最大列号 #define MAX_INPUT 1000 //每个输入行的最大长度 int read_column_numbers(int columns[],int max); void rearrange(char *output,char const *input, int n_columns,int const conlumns[]); int main(void) { int n_columns; //进行处理的列标号 int columns[MAX_COLS]; //需要处理的列数 char input[MAX_INPUT]; //容纳输入行的数组 char output[MAX_INPUT]; //容纳输出行的数组 //读取该串列标号 n_columns=read_column_numbers(columns,MAX_COLS); //读取、处理和打印剩余的输入行 while(gets(input)!=NULL) { printf("Original input:%s\n",input); rearrange(output,input,n_columns,columns); printf("Rearranged line:%s\n",output); } return EXIT_SUCCESS; } //读取列标号、如果超出规定范围则不予理会 int read_column_numbers(int columns[],int max) { int num=0; int ch; //取得列标号,如果所取得的梳子小于0则停止 while(num<max && scanf("%d",&columns[num])==1 && columns[num]>=0) num+=1; //确认已经读取的标号为偶数个,因为他们是以对的形式出现的 if(num%2!=0) { puts("Last column number is not paired."); exit(EXIT_FAILURE); } //丢弃该行中包含最后一个数字的那部分内容 while((ch=getchar())!=EOF && ch!='\n') ; return num; } //处理输入行,将指定列的字符连接在一起,输出行一NUL结尾 void rearrange(char *output,char const *input, int n_columns,int const columns[] ) { int col; int output_col; int len; len=strlen( input ); output_col=0; //处理每对列标号 for(col=0;col<n_columns;col+=2) { int nchars=columns[col+1]-columns[col]+1; //如果输入行结束或输出行数组已满,就结束任务 if(columns[col]>=len || output_col == MAX_INPUT - 1) break; //如果输出数据空间不够,只复制可以容纳的内容 if(output_col +nchars > MAX_INPUT-1) nchars=MAX_INPUT - output_col -1; //复制相关数据 strncpy(output + output_col,input + columns[col],nchars); output_col += nchars; } output[output_col]='\0 '; }
相关文章推荐
- 从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。
- 从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。
- 从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号,使能够处理的输入行的长度没有限制
- C语言 编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。在编写这个程序的时候要使这个程序能够处理的输入行的长度没有限制
- 从标准输入读取几行输入,每行输入都要打印到标准输出上,前面加上行号
- 从标准输入读取几行输入,每行输入都要打印到标准输出上,前面加上行号。
- 【c语言】从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号
- 【c语言】编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。在编写这个程序的时候要使这个程序能够处理的输入行的长度没有限制。
- 【C语言】从标准输入读取几行输入,每行输入都要打印到标准输出上,前面加上行号,并使此程序能够处理的输入行的长度没有限制。
- 2. 编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。在编写这个程序的时候要使用让这个程序能够处理的输入行的长度没有限制
- C语言中从标准输入读取几行输入,并打印到标准输出上两种方法
- 从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。在编写这个程序的时候要使用让这个程序能够处理的输入行的长度没有限制。
- 编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。在编写这个程序的时候要使这个程序能够处理的输入行的长度没有限制
- 编写程序从标准输入读取几行输入。每行输入都打印在标准输出上,且前面加上行号
- c语言:从标准输入读取几行输入,输入打印到标准输出上,加上行号
- 程序:从标准输入读取几行输入,每行输入都要打印到标准输出上,前面要加上行号。
- p16.2编写一个程序,从标准输入读取几行输入,每行输入都要打印到标准输出上,前面要加上行号,书入行的长度没有限制
- 【C语言】编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。编写这个程序的时候要使这个程序能够处理的输入行的长度没有限制。
- C语言:标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。行号不能有限制
- 1:菱形输出星号;2:打印100~999所有的水仙花数;3:求Sn=a+aa+aaa+aaaa+aaaaa的前五项之和;4:从标准输入读取C源代码,验证所有的花括号都是正确的成对出现