
在C语言中,可以通过使用动态内存分配和灵活的输入函数来输入一个长度不定的字符串、使用标准库函数gets或fgets、编写自定义函数来处理输入。下面将详细描述如何使用这几种方法来实现这一需求。
一、动态内存分配
动态内存分配是处理长度不定字符串输入的最常见方法之一。这种方法通过在程序运行时根据需要动态分配和释放内存,使得程序能够处理任意长度的字符串。
1. 使用malloc和realloc
首先,使用malloc函数为字符串分配初始内存。如果输入的字符串超过了初始分配的内存,使用realloc函数重新分配更大的内存。
#include <stdio.h>
#include <stdlib.h>
#define INITIAL_SIZE 10
int main() {
char *str;
int ch;
size_t size = INITIAL_SIZE;
size_t len = 0;
str = (char *)malloc(size * sizeof(char));
if (!str) {
fprintf(stderr, "Memory allocation failedn");
return 1;
}
while ((ch = getchar()) != 'n' && ch != EOF) {
str[len++] = ch;
if (len == size) {
size *= 2;
str = (char *)realloc(str, size * sizeof(char));
if (!str) {
fprintf(stderr, "Memory allocation failedn");
return 1;
}
}
}
str[len] = '