题目描述
字符串的输入输出处理。
输入
第一行是一个正整数N,最大为100。之后是多行字符串(行数大于N), 每一行字符串可能含有空格,字符数不超过1000。
输出
先将输入中的前N行字符串(可能含有空格)原样输出,再将余下的字符串(不含有空格)以空格或回车分割依次按行输出。每行输出之间输出一个空行。
代码:
#include <stdio.h>
#include <string.h>
#define MAX_LINES 100
#define MAX_LINE_LENGTH 1001
int main() {
int N;
scanf("%d", &N);
char lines[MAX_LINES][MAX_LINE_LENGTH];
int current_line = 0;
while (current_line < N && fgets(lines[current_line], MAX_LINE_LENGTH, stdin)) {
++current_line;
}
// 输出前N行(含空格)
for (int i = 0; i < current_line; ++i) {
printf("%s", lines[i]);
if (i < current_line - 1) { // 不在最后一行时输出换行符
printf("\n");
}
}
// 输出剩余行(不含空格)
char no_space_line[MAX_LINE_LENGTH];
while (fgets(lines[current_line], MAX_LINE_LENGTH, stdin)) {
// 去除字符串中的空格
int len = strlen(lines[current_line]);
int j = 0;
for (int i = 0; i < len; ++i) {
if (lines[current_line][i] != ' ') {
no_space_line[j++] = lines[current_line][i];
}
}
no_space_line[j] = '\0'; // 添加结束符
printf("%s\n", no_space_line); // 输出当前行
printf("\n"); // 输出一个空行
++current_line;
}
return 0;
}