下面是一个使用C语言编写的程序,它可以接收无限数量的字符串并将它们打印出来:
#include
#include
int main() {
char** strings = malloc(sizeof(char*)); // 动态分配一个字符串指针数组
int count = 0; // 字符串数量
char input[100]; // 存储输入的字符串
printf("请输入字符串(输入空行结束):\n");
while (1) {
// 读取输入的字符串
fgets(input, sizeof(input), stdin);
// 如果输入的字符串是空行,则结束循环
if (input[0] == '\n') {
break;
}
// 动态分配一个新的字符串,将输入的字符串拷贝到新的字符串中
strings[count] = malloc(strlen(input) + 1);
strcpy(strings[count], input);
// 增加字符串数量,并动态扩展字符串指针数组的大小
count++;
strings = realloc(strings, (count + 1) * sizeof(char*));
}
printf("输入的字符串是:\n");
for (int i = 0; i < count; i++) {
printf("%s", strings[i]);
free(strings[i]); // 释放每个字符串的内存
}
free(strings); // 释放字符串指针数组的内存
return 0;
}
这个程序使用了动态内存分配来处理无限数量的字符串。首先,我们使用malloc
函数分配一个初始大小的字符串指针数组strings
,并将字符串数量count
初始化为0。
然后,我们通过一个无限循环来接收用户输入的字符串。首先,我们使用fgets
函数读取一行输入的字符串,然后检查该字符串是否为空行,如果是,则退出循环。
如果输入的字符串不是空行,我们使用malloc
函数动态分配一个新的字符串,并使用strcpy
函数将输入的字符串拷贝到新的字符串中。然后,我们增加字符串数量count
的值,并使用realloc
函数动态扩展字符串指针数组strings
的大小。
最后,我们使用一个循环来打印输入的字符串,并在打印完后释放每个字符串的内存。最后,我们释放字符串指针数组strings
的内存。
请注意,在使用完每个字符串之后,我们必须调用free
函数来释放内存,以避免内存泄漏的问题。同样,当我们不再需要字符串指针数组strings
时,也必须调用free
函数来释放其内存。
希望这个示例能帮助到你!