[解決済み] fopen()使用時にセグメンテーションフォールトが発生する。
2022-02-11 17:09:44
質問
なぜこのようなことが起こるのかわかりませんが、この非常に単純なコードから "セグメント化障害(コアダンプ)" が発生します。なぜなのか、何か思い当たることはありますか?私は、fopen()にどのファイルを開くか伝えるために、文字列を使用しなければなりません。
#include <stdio.h>
#include <string.h>
int main(void) {
char *small = "small.ppm";
FILE * fp;
char word[5];
fp = fopen(small, "r");
fscanf(fp, "%s", word);
printf("%s\n", word);
return 0;
}
解決方法は?
あなたのコードは未定義の動作を呼び出す可能性があります。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char *small = "small.ppm";
FILE * fp = fopen(small, "r");
if (fp == NULL) {
perror("fopen()");
return EXIT_FAILURE;
}
char word[5];
if (fscanf(fp, "%4s", word) != 1) {
fprintf(stderr, "Error parsing\n");
return EXIT_FAILURE;
}
printf("%s\n", word);
}
関連
-
[解決済み】valgrind - サイズ8のブロックが割り当てられた後、アドレス ---- が0バイトになる。
-
[解決済み] Connect: ソケット以外でのソケット操作
-
[解決済み】警告:互換性のないポインタ型からの代入
-
[解決済み】初期化がキャストなしで整数からポインタを作成 - C言語
-
[解決済み] テスト
-
[解決済み】警告:引数「互換性のないポインタ型から」を渡す[デフォルトで有効]。
-
[解決済み] テスト
-
[解決済み】宣言指定子で2つ以上のデータ型がある場合のエラー【非公開
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み] セグメンテーションフォールトとは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C 言語の添え字で配列の要素値を代入すると、配列でもポインタでもベクトルでもない値になる
-
[解決済み] strtokのセグメンテーションフォールト
-
[解決済み】エラー:'for'ループの初期宣言はC99モードでしかできない【重複
-
[解決済み] [Solved] なぜこのようなエラーが発生するのでしょうか。「データ定義に型またはストレージクラスがない」?
-
[解決済み】C 未知の型名「my_structure」。
-
[解決済み】fgetsによるセグメンテーションフォールト(コアダンプ) - と思う。
-
[解決済み】LinuxのI_PUSHに相当するもの
-
[解決済み] char pointers: 'char*' から 'char' への無効な変換?
-
[解決済み] テスト
-
[解決済み] Cプログラムで「配列の添え字が整数でない」。