
如何用C语言输入任意长度的字符串:使用动态内存分配、使用getline函数、手动实现输入并扩展内存。我们将在本文详细探讨这三种方法,特别是动态内存分配方法。
一、动态内存分配
在C语言中,字符串的长度通常是固定的,这意味着你需要提前知道字符串的长度。然而,通过使用动态内存分配,你可以在运行时分配内存,从而能够处理任意长度的字符串。具体步骤如下:
1. 使用 malloc 和 realloc 函数
malloc 函数用于初始分配内存,而 realloc 函数用于重新分配内存,从而能够扩展数组。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* readString() {
int size = 10;
char* str = (char*)malloc(size * sizeof(char));
if (!str) {
printf("Memory allocation failedn");
exit(1);
}
int len = 0;
char ch;
while ((ch = getchar()) != 'n') {
if (len == size - 1) {
size *= 2;
str = (char*)realloc(str, size * sizeof(char));
if (!str) {
printf("Memory reallocation failedn");
exit(1);
}
}
str[len++] = ch;
}
str[len] = '