如何在C语言中实现连续读取多个字符串直到用户输入特定终止字符?
时间: 2024-10-21 22:11:53 浏览: 75
C++实现从输入中读取字符串
在C语言中,你可以通过循环和标准输入流(stdin)来实现连续读取多个字符串,直到用户输入特定的终止字符,比如'\0'(空字符),表示字符串结束。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STR_LENGTH 100 // 设置最大字符串长度
void read_strings(char** strings, int* count) {
char input[MAX_STR_LENGTH];
*strings = NULL;
*count = 0;
while (fgets(input, sizeof(input), stdin)) { // 从标准输入读取一行
size_t len = strlen(input); // 获取字符串长度
if (len > 0 && input[len - 1] != '\n') { // 去掉行尾的换行符
input[len - 1] = '\0'; // 将换行符替换为字符串结束符
}
if (input[0] == '\0' || input[0] == 'q') break; // 如果遇到空字符串或用户输入 'q' 退出循环
(*strings)[(*count)++] = strdup(input); // 动态分配内存并复制字符串
*strings = realloc(*strings, (*count) * sizeof(char*)); // 调整动态数组大小
}
}
int main() {
char** string_list;
int num_strings;
read_strings(&string_list, &num_strings);
printf("Read %d strings:\n", num_strings);
for (int i = 0; i < num_strings; i++) {
printf("%s\n", string_list[i]);
free(string_list[i]); // 释放每个字符串的内存
}
free(string_list); // 释放整个字符串列表的内存
return 0;
}
阅读全文