C言語で複数の行の文字列を入力する方法は?
C言語ではfgets関数を利用することで、複数行の文字列を入力できます。fgets関数はファイルストリームまたは標準入力から文字列を1行ずつ読み込み、改行文字に達するか指定した最大数まで文字を読み込んだ時点で終了します。
以下は fgets 関数を使用して複数の行の文字列を入力する、サンプルコードです。
#include <stdio.h>
#define MAX_LENGTH 100
int main() {
char str[MAX_LENGTH];
char input[MAX_LENGTH * 10]; // 假设最多输入10行字符串
printf("请输入多行字符串(以空行结束):\n");
int i = 0;
while (fgets(str, sizeof(str), stdin) != NULL) {
if (str[0] == '\n') { // 如果输入的是空行,则结束输入
break;
}
strcpy(input + i * MAX_LENGTH, str); // 将每一行字符串追加到input中
i++;
}
printf("输入的多行字符串为:\n");
for (int j = 0; j < i; j++) {
printf("%s", input + j * MAX_LENGTH); // 输出每一行字符串
}
return 0;
}
以下のサンプルコードでは、各行文字列の最大長を表すMAX_LENGTH定数を最初に定義しています。次に文字配列strとinputの2つを定義し、前者は各行入力の文字列の保存に使用し、後者はすべての入力文字列の保存に使用されます。
メイン関数では、最初にプロンプトを表示し、ループを使用してfgets関数で各行の入力を取得します。入力された行が空行(改行のみ)の場合、入力を終了します。それ以外の場合は、各行の入力をinputに追加し、i変数を使用して何行の入力を取得したかを記録します。
最後に、すべての入力された文字列を出力します。Input配列に格納された文字列を取り出し、printf関数を使って1行ずつ出力します。
fgets()は改行文字\nも文字列に取り込んでしまうため、出力時は文字列の行揃えを保持するためにprintf()関数を使用し、puts()関数は使用しません。