Cのスキルをリフレッシュしています。私は char *s を使用し、malloc を使用してメモリを s に割り当てています。次に、scanf を使用して、s への入力を読み取ります。しかし、私の質問は、メモリ チャンクのサイズを指定していないということです。しかし、プログラムは機能します。入力文字列の任意の長さに対してメモリはどのように割り当てられますか? scanf は単にポインタをインクリメントし、その場所にデータを書き込んでいますか?
#include <stdio.h>
#include <stdlib.h>
int main() {
char *s;
s = (char *) malloc(sizeof(s)); //I did not specify how much like malloc(sizeof(s) * 128)
if (s == NULL) {
fprintf(stderr, "\nError allocating memory for string");
exit(1);
}
scanf("%s", s);
puts(s);
free(s);
return 0;
}
/*
Input:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Output:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
*/