メモリを節約できる読み取り行のバージョンが必要です。私はこの「実用的な」ソリューションを持っています。しかし、それがメモリでどのように動作するかはわかりません。有効free(text)
にすると、数行で機能し、エラーが発生します。したがって、テキストをmallocしても、テキストも結果も解放されません。あれは正しいですか ?そして、それはなぜですか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* readFromIn()
{
char* text = malloc(1024);
char* result = fgets(text, 1024, stdin);
if (result[strlen(result) - 1] == 10)
result[strlen(result) - 1] = 0;
//free(text);
return result;
}
これで読む短い行がたくさんあります。また、標準入力をFILE*
ハンドルに置き換える必要があります。短い行しかないので、テキストを再割り当てする必要はありません。