在c语言中,需要输入n组字符串,如何储存这些字符串
时间: 2024-10-13 17:18:49 浏览: 21
C语言实现输入一个字符串后打印出该字符串中字符的所有排列
在 C 语言中,如果你想要输入 n 组字符串并存储它们,可以采用数组、动态内存分配或者结构体结合字符指针的方式来实现。这里给出几种常见的方法:
1. **数组**:
如果你知道每组字符串的最大长度,你可以创建一个二维字符数组 `strings[n][max_length]` 来存储每个字符串。例如:
```c
char strings[10][50]; // 假设最多10组,每组最多50个字符
int n;
printf("请输入字符串组数(n): ");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第 %d 组字符串: ", i + 1);
fgets(strings[i], sizeof(strings[i]), stdin); // 注意去掉末尾换行符
}
```
2. **动态内存分配**:
使用 `malloc` 和 `realloc` 动态分配内存,这更灵活,可根据实际需要调整每个字符串的空间大小:
```c
#include <stdlib.h>
char** strings = malloc(n * sizeof(char*)); // 分配空间存储指针
if (!strings) { ... handle error ... }
for (int i = 0; i < n; i++) {
strings[i] = malloc(MAX_LENGTH * sizeof(char)); // MAX_LENGTH是你预计的最长字符串长度
if (!strings[i]) { ... handle error ... }
printf("请输入第 %d 组字符串: ", i + 1);
fgets(strings[i], MAX_LENGTH, stdin);
}
```
之后别忘了释放内存:
```c
for (int i = 0; i < n; i++) {
free(strings[i]);
}
free(strings);
```
3. **结构体结合数组**:
如果想对每个字符串组的数据进行统一管理,可以创建一个结构体,比如 `StringGroup`:
```c
typedef struct {
char str[MAX_LENGTH];
int length;
} StringGroup;
StringGroup groups[n];
for (int i = 0; i < n; i++) {
printf("请输入第 %d 组字符串: ", i + 1);
fgets(groups[i].str, MAX_LENGTH, stdin);
groups[i].length = strlen(groups[i].str);
}
```
阅读全文