teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

検証手順にコンパイル手順を含めた

2020/05/23 02:37

投稿

hidezzz
hidezzz

スコア1248

answer CHANGED
@@ -31,8 +31,12 @@
31
31
  return 0;
32
32
  }
33
33
  ```
34
+ 上記ソースコードを「hoge.c」というファイルに保存しておいてください。
34
- 上記ソースコードから「hoge」という実行ファイルを作成し実行した結果です。
35
+ 以下は「hoge.c」から「hoge」という実行ファイルを作成し、それを実行した結果です。
35
36
  ```terminal
37
+ (この時点でhoge.cというファイルが存在しているとして…)
38
+ $make hoge
39
+ cc hoge.c -o hoge
36
40
  $touch mesure.csv
37
41
  $chmod 666 mesure.csv
38
42
  $ls -l mesure.csv

2

動作検証可能とするため単独で確認出来るようにこちらの提示ソースコードを修正

2020/05/23 02:37

投稿

hidezzz
hidezzz

スコア1248

answer CHANGED
@@ -12,17 +12,36 @@
12
12
  またfopen()でNULLが返ってきた場合、errnoにエラーコードが返ってくるので、
13
13
  strerror()関数等でエラーメッセージを表示するのが良いと思います。
14
14
 
15
-
15
+ ※動作検証可能とするため単独で確認ができるようにしました。
16
16
  ```C
17
- /* 以下コードを実行するためには先頭に次のインクルードを入れてください */
18
17
  #include <stdio.h>
19
18
  #include <string.h>
20
19
  #include <errno.h>
21
20
 
21
+ int main( void ) {
22
+ FILE *fp;
23
+ fp=fopen("mesure.csv", "w");
24
+ if( fp == NULL){
25
+ printf("ファイルのオープンに失敗(%s)\n", strerror( errno ) );
26
+ return 0;
27
+ }
22
28
 
23
- fp=fopen("mesure.csv", "w");
24
- if( fp == NULL){
25
- printf("ファイルのオープンに失敗(%s)\n", strerror( errno ) );
29
+ printf( "オープンに成功\n" );
30
+
26
- return 0;
31
+ return 0;
27
- }
32
+ }
33
+ ```
34
+ 上記ソースコードから「hoge」という実行ファイルを作成し実行した結果です。
35
+ ```terminal
36
+ $touch mesure.csv
37
+ $chmod 666 mesure.csv
38
+ $ls -l mesure.csv
39
+ -rw-rw-rw- 1 hidezzz hidezzz 0 5月 22 16:14 mesure.csv
40
+ $./hoge
41
+ オープンに成功
42
+ $chmod 444 mesure.csv
43
+ $ls -l mesure.csv
44
+ -r--r--r-- 1 hidezzz hidezzz 0 5月 22 16:16 mesure.csv
45
+ $./hoge
46
+ ファイルのオープンに失敗(Permission denied)
28
47
  ```

1

勝手に気を回して提示コードから「return 1」と変更してしまったが、提示コードが関数内部なのでむやみに変更してしまうのは良くなかった。

2020/05/22 07:20

投稿

hidezzz
hidezzz

スコア1248

answer CHANGED
@@ -23,6 +23,6 @@
23
23
  fp=fopen("mesure.csv", "w");
24
24
  if( fp == NULL){
25
25
  printf("ファイルのオープンに失敗(%s)\n", strerror( errno ) );
26
- return 1;
26
+ return 0;
27
27
  }
28
28
  ```