回答編集履歴
3
検証手順にコンパイル手順を含めた
answer
CHANGED
@@ -31,8 +31,12 @@
|
|
31
31
|
return 0;
|
32
32
|
}
|
33
33
|
```
|
34
|
+
上記ソースコードを「hoge.c」というファイルに保存しておいてください。
|
34
|
-
|
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
動作検証可能とするため単独で確認出来るようにこちらの提示ソースコードを修正
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
|
-
|
29
|
+
printf( "オープンに成功\n" );
|
30
|
+
|
26
|
-
|
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」と変更してしまったが、提示コードが関数内部なのでむやみに変更してしまうのは良くなかった。
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
|
26
|
+
return 0;
|
27
27
|
}
|
28
28
|
```
|