在C語言中,可以使用動態內存分配函數malloc()
和realloc()
來輸入未知長度的字符串。首先,可以使用malloc()
函數來分配一個初始大小的內存空間來存儲字符串,然后使用realloc()
函數來根據需要調整內存空間的大小。
以下是一個示例代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *input = (char *)malloc(100); // 初始分配100個字節的內存空間
char *temp;
int len = 0;
if (input == NULL) {
printf("內存分配失敗\n");
return 1;
}
printf("請輸入字符串:\n");
while(1) {
if (len >= 100) {
// 調整內存空間大小
temp = (char *)realloc(input, len + 10);
if (temp == NULL) {
printf("內存分配失敗\n");
free(input);
return 1;
} else {
input = temp;
}
}
// 逐字符讀取輸入
input[len] = getchar();
if (input[len] == '\n') {
input[len] = '\0';
break;
}
len++;
}
printf("輸入的字符串為:%s\n", input);
free(input);
return 0;
}
在這個示例代碼中,首先使用malloc()
函數分配了一個初始大小為100字節的內存空間來存儲字符串。然后在一個循環中逐字符讀取輸入的字符串,并根據需要使用realloc()
函數調整內存空間的大小。當輸入結束時,打印出輸入的字符串并釋放內存空間。