#include <stdio.h>
#include <stdlib.h>
int main()
{
int size=10;
char string1[50];
char *string2;
string2=(char *)malloc(size*sizeof(char));
fgets(string1,10,stdin);
printf("%s",string1);
fgets(string2,10,stdin);
printf("%s",string2);
}
このコードには2つの文字列があり、もう1つはポインタで動的に作成された配列です。このコードの文字列のサイズはどうなりますか?
- 入力が文字列1の場合は50文字未満、文字列2の場合は10文字未満です。サイズを小さくするには、埋められていない領域が無駄になります。
- 文字列2の場合、mallocサイズのパラメータが10で、fgetsのサイズパラメータが10です。fgets(string2,50、stdin)のサイズをmallocのサイズより大きくするとどうなりますか?
- それぞれの場合に入力文字列の最終サイズを計算する方法sizeof演算子を使用しましたが、string1とstring2のハードコードされたサイズはそれぞれ50と10です
- ダイナミック文字列?
1)はい。スペースが無駄になります。回答:割り当てを減らしてください。質問のタイトルは何もありません。 –
2)。クラッシュ。 3)質問が間違っている。 2番目の文字列のサイズは10ではありません。これはポインタのサイズです。通常は4または8です。 –
@WeatherVane入力のために感謝します。 – ekaf