c语言二维字符数组的输入输出
在C语言中,二维字符数组(也称为字符串数组)的输入和输出涉及到如何正确地处理字符数组的存储、输入数据以及输出数据。以下是详细的说明:
1. 定义和初始化二维字符数组
c#define ROWS 3
#define COLS 20
char strings[ROWS][COLS]; // 定义一个二维字符数组,包含ROWS行和COLS列
这里定义了一个二维字符数组 strings
,其中 ROWS
表示数组的行数,COLS
表示每行的最大字符数(包括字符串结尾的空字符 \0
)。
2. 输入二维字符数组
从键盘输入
c#include <stdio.h>
void inputStrings(char arr[][COLS], int rows) {
printf("Enter %d strings:\n", rows);
for (int i = 0; i < rows; ++i) {
printf("String %d: ", i + 1);
scanf("%s", arr[i]); // 注意这里不需要取地址符&
}
}
- 使用
scanf
函数输入每一行字符串。在输入时,scanf
会自动在字符串末尾添加空字符\0
。
示例:
cinputStrings(strings, ROWS);
从文件输入
c#include <stdio.h>
void inputFromFile(char arr[][COLS], int rows, const char *filename) {
FILE *file = fopen(filename, "r");
if (file == NULL) {
printf("Error opening file %s\n", filename);
return;
}
for (int i = 0; i < rows; ++i) {
if (fscanf(file, "%s", arr[i]) != 1) {
printf("Error reading from file.\n");
break;
}
}
fclose(file);
}
3. 输出二维字符数组
输出到屏幕
cvoid outputStrings(char arr[][COLS], int rows) {
printf("Outputting %d strings:\n", rows);
for (int i = 0; i < rows; ++i) {
printf("String %d: %s\n", i + 1, arr[i]);
}
}
- 使用
printf
函数输出每一行字符串。
示例:
coutputStrings(strings, ROWS);
输出到文件
cvoid outputToFile(char arr[][COLS], int rows, const char *filename) {
FILE *file = fopen(filename, "w");
if (file == NULL) {
printf("Error opening file %s\n", filename);
return;
}
for (int i = 0; i < rows; ++i) {
fprintf(file, "%s\n", arr[i]);
}
fclose(file);
}
- 使用
fprintf
函数将每一行字符串输出到文件中。
示例程序
c#include <stdio.h>
#define ROWS 3
#define COLS 20
void inputStrings(char arr[][COLS], int rows) {
printf("Enter %d strings:\n", rows);
for (int i = 0; i < rows; ++i) {
printf("String %d: ", i + 1);
scanf("%s", arr[i]); // 注意这里不需要取地址符&
}
}
void outputStrings(char arr[][COLS], int rows) {
printf("Outputting %d strings:\n", rows);
for (int i = 0; i < rows; ++i) {
printf("String %d: %s\n", i + 1, arr[i]);
}
}
void outputToFile(char arr[][COLS], int rows, const char *filename) {
FILE *file = fopen(filename, "w");
if (file == NULL) {
printf("Error opening file %s\n", filename);
return;
}
for (int i = 0; i < rows; ++i) {
fprintf(file, "%s\n", arr[i]);
}
fclose(file);
}
int main() {
char strings[ROWS][COLS];
// 输入字符串数组
inputStrings(strings, ROWS);
// 输出到屏幕
outputStrings(strings, ROWS);
// 输出到文件
outputToFile(strings, ROWS, "output.txt");
return 0;
}
这个示例程序展示了如何输入、输出二维字符数组,并演示了从键盘输入、输出到屏幕和输出到文件的操作。在实际应用中,可以根据具体需求调整输入输出函数以及数组的大小和数据来源。