百年孤独
小水手

UID 19889
精华
0
积分 14
帖子 14
阅读权限 10
注册 2003-8-8
状态 离线
|
请看看这个小程序实现的是什么功能?结果我分析出来了,就是不知道是什么功能
#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)
{
int num = 0;
int ch;
printf("Please input the Double num end with -1[(0-1000) eg. 1 3 7 9 -1]\n");
while((num < max) && (scanf("%d", &columns[num]) == 1) && (columns[num] >= 0))
{
num++;
}
if(num % 2 != 0)
{
puts("Last column number is not paride");
exit(EXIT_FAILURE);
}
while((ch = getchar()) != EOF && ch != '\n')
{
;
}
return num;
}
void rearrange(char *output, char const *input, int n_columns, int const columns[])
{
int col;
int output_col;
int len;
int nchars;
len = strlen(input);
output_col = 0;
for(col = 0; col < n_columns; col += 2)
{
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';
}
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("Rearrange: %s\n", output);
}
return 0;
}
|
|