如何输入多行长度相等但未知的多行字符串并存入进一个二维字符数组?
时间: 2024-11-25 07:20:33 浏览: 8
在C语言中,输入多行长度相等但未知的多行字符串并存入一个二维字符数组,可以使用`fgets()`函数逐行读取,并控制每一行的长度。由于二维字符数组实际上是字符的一维数组,所以我们需要知道每一列的总长度来分配内存。这里假设我们想要每行最多存储n个字符。
下面是一个简单的示例[^1]:
```c
#include <stdio.h>
#define ROWS 3 // 行数
#define COLS 10 // 列数
// 声明二维字符数组
char multiLineString[ROWS][COLS];
int main() {
int i, j;
int totalCharsRead;
// 循环读取多行字符串,直到用户输入'\n'
for (i = 0; i < ROWS; ++i) {
printf("请输入第 %d 行(最多%d个字符):", i + 1, COLS - 1); // 减1避免包括'\0'字符
fgets(multiLineString[i], COLS, stdin); // fgets读取一行,不包括换行符
totalCharsRead = strlen(multiLineString[i]); // 获取实际读取的字符数
if (totalCharsRead >= COLS) { // 如果超过指定字符数,截断多余部分
multiLineString[i][COLS - 1] = '\0'; // 添加终止符
} else {
multiLineString[i][totalCharsRead] = '\0'; // 如果未满,直接添加终止符
}
}
// 打印结果
for (i = 0; i < ROWS; ++i) {
printf("%s\n", multiLineString[i]);
}
return 0;
}
```
这个程序提示用户输入每一行,然后用`fgets()`读取,确保每行不超过指定的字符数。注意,`fgets()`会读取换行符,所以在计算总字符数时要减去1。如果有多余字符,它会在末尾自动添加终止符`\0`。
阅读全文