文字列の長さを計算する関数。私はここの論理が正しいと思う:文字列の長さを見つけるときのセグメンテーションフォルト
私はここで文字列を正しく取り、それを割り当てていますか?誰も私がここでセグメンテーションフォルトを得る理由を説明してもらえますか?
文字列の長さを計算する関数。私はここの論理が正しいと思う:文字列の長さを見つけるときのセグメンテーションフォルト
私はここで文字列を正しく取り、それを割り当てていますか?誰も私がここでセグメンテーションフォルトを得る理由を説明してもらえますか?
s
は何かを指し示す必要があります。ここでは128のバイトを割り当てる例です。
s = malloc(128);
は、あなたがそれで終わったら、メモリを解放してください:あなたが読むことができますどのくらい制限する必要があります
free(s);
注意ユーザーから。
scanf("%127s", s);
NULターミネータのために余分なバイトが残っています。
main()関数のこの2行目がポインタを宣言しています。しかし、そのポインタは、プログラムが所有するメモリブロックを指すように初期化されることはありません。
ヒープ割り当て関数(malloc、calloc、realloc)のいずれかを使用してそのポインタを初期化することをお勧めします。
この初期化されていないポインタを使用することは未定義の動作であり、見たとおりにsegフォールトイベントが発生します。
機能のscanf関数()ファミリのいずれかを呼び出して、