c语言怎么输入任意数量的字符串
时间: 2023-12-09 09:04:29 浏览: 194
使用C语言提取子字符串及判断对称子字符串最大长度
在C语言中,可以使用动态内存分配函数(如malloc、realloc等)来实现输入任意数量的字符串。具体步骤如下:
1. 定义一个字符指针数组,用于存储输入的字符串。
2. 使用循环结构输入字符串,每输入一个字符串就动态分配内存空间存储这个字符串,并将指针存入字符指针数组中。
3. 当输入结束后,可以根据需要使用realloc函数重新分配内存空间,以确保存储的字符串数量与实际需要的数量相匹配。
4. 最后,记得在程序结束前释放动态分配的内存空间,以避免内存泄漏。
下面是一个简单的示例代码,用于输入任意数量的字符串:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char **str_array = NULL; // 定义字符指针数组
char input_str[100]; // 定义用于输入字符串的数组
int count = 0; // 记录输入的字符串数量
int i;
// 循环输入字符串,直到用户输入空行为止
while (1) {
printf("请输入第 %d 个字符串(输入空行结束):\n", count + 1);
fgets(input_str, sizeof(input_str), stdin);
// 判断用户是否输入空行
if (strcmp(input_str, "\n") == 0) {
break;
}
// 动态分配内存空间存储字符串
str_array = realloc(str_array, (count + 1) * sizeof(char *));
str_array[count] = malloc(strlen(input_str) + 1);
strcpy(str_array[count], input_str);
count++; // 更新输入的字符串数量
}
// 输出输入的字符串
printf("您输入了以下 %d 个字符串:\n", count);
for (i = 0; i < count; i++) {
printf("%s", str_array[i]);
free(str_array[i]); // 释放分配的内存空间
}
free(str_array); // 释放字符指针数组的内存空间
return 0;
}
```
在这个示例代码中,我们使用了fgets函数来输入字符串,因为它可以防止缓冲区溢出的问题。同时,在动态分配内存空间时,我们使用了strlen函数来获取字符串的长度,以确保分配的内存空间足够存储整个字符串。
阅读全文