C言語の場合一応エラーハンドリングが書けるのですが
C言語開発での例外処理
使わないで確認するのに一番簡単なのはコメント化してみる事です。
1回目(変数への割り当て確認)
C
1#include <stdio.h>
2
3main()
4{
5 FILE *fp;
6 int a = 100, b = 5, c = 40;
7 int x = 1, y = 10, z = 100;
8 char delm[] = "----====----\n";
9
10 // fp = fopen("mat.txt", "w");
11 /*
12 if(fp == NULL)
13 {
14 return 0;
15 }
16 fputs(delm, fp);
17 fprintf("%4d%4d%4d\n%4d%4d%4d\n", a, b, c, x, y, z);
18 fputs(delm, fp);
19 fclose(fp);
20 */
21}
22
2回目(書込みファイルを開いて閉じる)
成功すれば指定パスに0バイトのmat.txtが作成されるはずです
C
1#include <stdio.h>
2
3main()
4{
5 FILE *fp;
6 int a = 100, b = 5, c = 40;
7 int x = 1, y = 10, z = 100;
8 char delm[] = "----====----\n";
9
10 fp = fopen("mat.txt", "w");
11
12 if(fp == NULL)
13 {
14 return 0;
15 }
16 /*
17 fputs(delm, fp);
18 fprintf("%4d%4d%4d\n%4d%4d%4d\n", a, b, c, x, y, z);
19 fputs(delm, fp);
20 */
21 fclose(fp);
22}
23
3回目(ファイルへの1行書き込みテスト)
C
1#include <stdio.h>
2
3main()
4{
5 FILE *fp;
6 int a = 100, b = 5, c = 40;
7 int x = 1, y = 10, z = 100;
8 char delm[] = "----====----\n";
9
10 fp = fopen("mat.txt", "w");
11
12 if(fp == NULL)
13 {
14 return 0;
15 }
16 fputs(delm, fp);
17 /*
18 fprintf("%4d%4d%4d\n%4d%4d%4d\n", a, b, c, x, y, z);
19 fputs(delm, fp);
20 */
21 fclose(fp);
22}
23
4回目(ファイルへの2行書き込みテスト)
ここでエラーが発生するはず
C
1#include <stdio.h>
2
3main()
4{
5 FILE *fp;
6 int a = 100, b = 5, c = 40;
7 int x = 1, y = 10, z = 100;
8 char delm[] = "----====----\n";
9
10 fp = fopen("mat.txt", "w");
11
12 if(fp == NULL)
13 {
14 return 0;
15 }
16 fputs(delm, fp);
17 // fprintf(fp, "%4d%4d%4d\n%4d%4d%4d\n", a, b, c, x, y, z); // こちらが正解
18 fprintf("%4d%4d%4d\n%4d%4d%4d\n", a, b, c, x, y, z);
19 /*
20 fputs(delm, fp);
21 */
22 fclose(fp);
23}
24
こんな感じで、まずは大きくコメント化して1処理毎にコメントを外していくのが一番早かったりします。
※一応だけどfopenの時きちんとパス指定してるよね?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/16 07:13