二维字符串数组的输入与输出C语言
时间: 2024-11-22 22:42:36 浏览: 27
C语言数组:C语言数组定义、二维数组、动态数组、字符串数组_C语言中文网1
在C语言中,二维字符串数组是一种特殊的数组结构,它由多个一维字符数组组成,每个一维数组代表数组中的一个行。你可以通过以下步骤来处理它们:
**输入**:
1. 使用`fgets()`函数读取每行字符串,然后用换行符`\n`作为分隔符将每一行存储在一个临时字符数组中。
2. 将临时数组转换为一维字符串数组,并分配给二维数组的一行。
示例代码:
```c
#include <stdio.h>
#define ROWS 3 // 行数
#define COLS 4 // 列数
char **input(ROWS); // 定义二维字符串数组的指针
int main() {
for (int i = 0; i < ROWS; i++) {
char line[COLS + 1]; // 每行字符串最多包含COLS个字符加上'\0'
fgets(line, sizeof(line), stdin);
input[i] = malloc(COLS * sizeof(char*)); // 分配空间给当前行
input[i][0] = strtok(line, "\n"); // 获取第一列并保存
for (int j = 1; j < COLS; j++) {
input[i][j] = strtok(NULL, "\t"); // 循环获取其他列,用'\t'作为分隔符
}
}
// ... 然后处理输入的二维数组
}
```
**输出**:
1. 使用`printf()`函数遍历二维数组,逐行打印出来。可以使用嵌套循环来控制行和列。
2. 也可以使用`puts()`代替`printf()`,但需要先计算整个字符串的实际长度。
示例代码:
```c
void display(ROWS) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS && input[i][j] != NULL; j++) {
printf("%s ", input[i][j]);
}
puts("\n");
}
}
int main() {
// ... 输入部分之后
display(ROWS);
// ... 其他操作,如释放内存等
}
```
阅读全文