C言語:未知の文字列長を入力する効率的な方法
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バイトのメモリ空間を割り当てて文字列を保存します。次に、入力された文字列を1文字ずつ読み取り、必要に応じてrealloc()関数を使用してメモリ空間のサイズを調整します。入力が終了したら、入力された文字列を出力し、メモリ空間を解放します。