質問編集履歴

6

実行結果の修正

2018/01/04 06:29

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,9 +2,13 @@
2
2
 
3
3
  $ data_add data_tel.txtで実行すると「ファイルの内容を書き込んで下さい。」と出て
4
4
 
5
- sudou ,090-4256と打ち込むと、“data_tel.txt”ファイルに書き込みました。error01:ファイルに書き込めません。というエラーが出ています。
5
+ sudou ,090-3333
6
6
 
7
+ kitou ,080-1342と打ち込むと、“data_tel.txt”ファイルに書き込みました。
8
+
9
+ と表示されるようになりました。sudouがudouになぜなるかまできました。
10
+
7
- なぜでょうか。教えてださ
11
+ よろしくお願いたします。
8
12
 
9
13
  ```ここに言語を入力
10
14
 
@@ -116,61 +120,65 @@
116
120
 
117
121
  naka@naka ~/kadai/kadai9-8
118
122
 
119
- $ gcc -o data_add data_add.c -Wall
123
+ $ gcc -g -o data_add1 data_add1.c -Wall
120
124
 
121
125
 
122
126
 
123
127
  naka@naka ~/kadai/kadai9-8
124
128
 
125
- $ data_add tmp.txt
129
+ $ data_add1 data_tel.txt
130
+
131
+ Check
126
132
 
127
133
  ファイルの内容を書き込んで下さい。
128
134
 
129
135
  プログラムを終了するときは「Ctrl + z 」を押します。
130
136
 
137
+ sudou ,090-3333
138
+
139
+ kitou ,080-1342
140
+
131
- foo
141
+ ^Z
132
142
 
133
143
 
134
144
 
135
- “tmp.txt”ファイルに書き込みました。error01:ファイルに書き込めません
145
+ data_tel.txt”ファイルに書き込みました。
136
-
137
- nakamura@nakamura ~/kadai/kadai9-8
138
-
139
- $ data_add tmp.txt
140
-
141
- ファイルの内容を書き込んで下さい。
142
-
143
- プログラムを終了するときは「Ctrl + z 」を押します。
144
-
145
- foo
146
-
147
-
148
-
149
- “tmp.txt”ファイルに書き込みました。error01:ファイルに書き込めません
150
146
 
151
147
 
152
148
 
153
149
  naka@naka ~/kadai/kadai9-8
154
150
 
155
- $ data_add tmp.txt
156
-
157
- ファイルの内容を書き込んで下さい。
158
-
159
- プログラムを終了するときは「Ctrl + z 」を押します。
160
-
161
- bar
151
+ $
162
152
 
163
153
 
164
154
 
165
- tmp.txt”ファイルに書き込みました。error01:ファイルに書き込めません
155
+ data_tel.txt
166
156
 
167
- naka@naka ~/kadai/kadai9-8
157
+ sachiko ,090-0809
168
158
 
169
- $
159
+ naka ,090-7777
160
+
161
+ kiyoko ,090-9999
162
+
163
+ satou ,090-3214
164
+
165
+ kinosita ,090-8769
166
+
167
+ yamada ,090-4325
168
+
169
+ itou ,080-6354
170
+
171
+ udou ,090-3333 // 追加されたデータ
172
+
173
+ kitou ,080-1342 // 追加されたデータ
170
174
 
171
175
 
172
176
 
177
+
178
+
173
- tmp.txtはoa」なっています。foo、barのo,aだと思す。
179
+ data_tel.txtはsudou入力したのに、左に1個ずれているみたす。
180
+
181
+ 電話番号が1個ひだりにずれています。
174
182
 
175
183
 
176
184
 

5

mattonさんのコードです

2018/01/04 06:29

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -22,121 +22,93 @@
22
22
 
23
23
  #include<stdio.h>
24
24
 
25
- #include<string.h> //for strcmp,strstr
25
+ #include<string.h> //for strcmp,strstr
26
26
 
27
- #include<stdlib.h> //for exit
27
+ #include<stdlib.h> //for exit
28
28
 
29
29
 
30
30
 
31
- #define CTRL_Z 26
31
+ #define CTRL_Z 26
32
32
 
33
33
 
34
34
 
35
- void data_add(int argc,char* argv[]);
35
+ int data_add(char*);
36
36
 
37
37
 
38
38
 
39
- int main(int argc,char *argv[])
39
+ int main(int argc,char *argv[]) {
40
40
 
41
- {
41
+ fprintf(stderr, "Check\n");
42
42
 
43
- data_add(argc,argv);
43
+ if (argc != 2) {
44
44
 
45
-
45
+ puts("error01:[使用方法]:<プログラム名> <ファイル名>");
46
46
 
47
- return 0;
47
+ return 1;
48
48
 
49
+ }
49
50
 
51
+ return data_add(argv[1]);
50
52
 
51
53
  }
52
54
 
53
55
 
54
56
 
55
- void data_add(int argc,char* argv[])
57
+ int data_add(char *filename) {
56
58
 
57
- {
59
+ FILE *fp1;
58
60
 
59
- FILE *fp1;
61
+ char ch1;
60
62
 
61
- char ch1;
62
63
 
63
- fprintf( stderr, "Check\n" );
64
64
 
65
- if(!(argc==2)){
65
+ if ((fp1 = fopen(filename, "w")) == NULL) {
66
66
 
67
- printf("error01:[使用方法]:<プログラム名>_<ファイル名>");
67
+ puts("error01:ファイルを開くことができません。");
68
68
 
69
+ return 1;
70
+
71
+ }
72
+
73
+ puts("ファイルの内容を書き込んで下さい。");
74
+
75
+ puts("プログラムを終了するときは「Ctrl + z 」を押します。");
76
+
77
+
78
+
79
+ getchar(); //改行消去
80
+
81
+ while((ch1=getchar()) != EOF) {
82
+
83
+ if (fputc(ch1,fp1) == EOF) {
84
+
85
+ printf("error01:ファイルに書き込めません\n");
86
+
69
- exit(1);
87
+ fclose(fp1);
88
+
89
+ return 1;
70
90
 
71
91
  }
72
92
 
73
-
93
+ }
74
94
 
75
- if(!(fp1=fopen(argv[1],"w"))){
95
+ if (fclose(fp1) == EOF) {
76
96
 
77
- printf("error01:ファイルを開くことができません");
97
+ puts("error01:ファイルを閉じることが出来ません\n");
78
98
 
79
- exit(1);
99
+ return 1;
80
100
 
81
- }
101
+ }
82
102
 
83
- printf("ファイルの内容を書き込んで下さい。\n");
103
+ printf("\n“%s”ファイル書き込みました。\n", filename);
84
104
 
85
-
86
-
87
- printf("プログラムを終了するときは「Ctrl + z 」を押します。\n");
88
-
89
-
90
-
91
- getchar(); //改行消去
92
-
93
-
94
-
95
- while((ch1=getchar())!=CTRL_Z)
96
-
97
- {
98
-
99
- fputc(ch1,fp1);
100
-
101
- //fputc関数は文字(ch1)を1文字ファイル(fp1)に書き込む関数です。
102
-
103
- //■書式
104
-
105
- //#include <stdio.h>
106
-
107
-
108
-
109
- // int fputc(int ch1, FILE *fp1);
110
-
111
- //第一引数に書き込む文字
112
-
113
- //第二引数にファイルポインタ
114
-
115
-
116
-
117
- if(ferror(fp1)){
118
-
119
- printf("error01:ファイルに書き込めません\n");
120
-
121
- fclose(fp1);
122
-
123
- exit(1);
105
+ return 0;
124
-
125
- }
126
-
127
- if(fclose(fp1)==-1){
128
-
129
- printf("error01:ファイルを閉じることが出来ません\n");
130
-
131
- exit(1);
132
-
133
- }
134
-
135
- printf("\n“%s”ファイルに書き込みました。",argv[1]);
136
-
137
- }
138
106
 
139
107
  }
108
+
109
+
110
+
111
+
140
112
 
141
113
 
142
114
 
@@ -150,21 +122,55 @@
150
122
 
151
123
  naka@naka ~/kadai/kadai9-8
152
124
 
153
- $ data_add data_tel.txt
125
+ $ data_add tmp.txt
154
126
 
155
127
  ファイルの内容を書き込んで下さい。
156
128
 
157
129
  プログラムを終了するときは「Ctrl + z 」を押します。
158
130
 
159
- sudou ,090-4256
131
+ foo
160
132
 
161
133
 
162
134
 
163
- data_tel.txt”ファイルに書き込みました。error01:ファイルに書き込めません
135
+ “tmp.txt”ファイルに書き込みました。error01:ファイルに書き込めません
136
+
137
+ nakamura@nakamura ~/kadai/kadai9-8
138
+
139
+ $ data_add tmp.txt
140
+
141
+ ファイルの内容を書き込んで下さい。
142
+
143
+ プログラムを終了するときは「Ctrl + z 」を押します。
144
+
145
+ foo
164
146
 
165
147
 
166
148
 
149
+ “tmp.txt”ファイルに書き込みました。error01:ファイルに書き込めません
150
+
151
+
152
+
153
+ naka@naka ~/kadai/kadai9-8
154
+
155
+ $ data_add tmp.txt
156
+
157
+ ファイルの内容を書き込んで下さい。
158
+
159
+ プログラムを終了するときは「Ctrl + z 」を押します。
160
+
161
+ bar
162
+
163
+
164
+
165
+ “tmp.txt”ファイルに書き込みました。error01:ファイルに書き込めません
166
+
167
+ naka@naka ~/kadai/kadai9-8
168
+
167
- $
169
+ $
170
+
171
+
172
+
173
+ tmp.txtは「oa」となっています。foo、barのo,aだと思います。
168
174
 
169
175
 
170
176
 

4

質問の修正

2018/01/04 05:47

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,8 @@
1
- プログラムを実行するとエラーが出ます。argv[1]が表示されない。
1
+ プログラムを実行するとエラーが出ます。
2
2
 
3
- $ data_add data_tel.txtと引数2つにしても、argc==1なっいます。
3
+ $ data_add data_tel.txtで実行する「ファイルの内容書き込んで下さい。」
4
+
5
+ sudou ,090-4256と打ち込むと、“data_tel.txt”ファイルに書き込みました。error01:ファイルに書き込めません。というエラーが出ています。
4
6
 
5
7
  なぜでしょうか。教えてください
6
8
 

3

コードの修正と実行結果の変更

2018/01/04 05:11

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- プログラムを実行するとエラーが出ます。argv[1]が表示されない
1
+ プログラムを実行するとエラーが出ます。。
test CHANGED
File without changes

2

コードの修正と実行結果の変更

2018/01/04 04:47

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
File without changes

1

コードの手直しと実行結果の変更

2018/01/04 04:36

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  {
40
40
 
41
- data_add(argc,&argv[1]);
41
+ data_add(argc,argv);
42
42
 
43
43
 
44
44
 
@@ -138,7 +138,7 @@
138
138
 
139
139
 
140
140
 
141
- /*
141
+ 実行結果
142
142
 
143
143
  naka@naka ~/kadai/kadai9-8
144
144
 
@@ -150,9 +150,15 @@
150
150
 
151
151
  $ data_add data_tel.txt
152
152
 
153
- Check
153
+ ファイルの内容を書き込んで下さい。
154
154
 
155
+ プログラムを終了するときは「Ctrl + z 」を押します。
156
+
157
+ sudou ,090-4256
158
+
159
+
160
+
155
- error01:ファイルを開くことができません
161
+ “data_tel.txt”ファイルに書き込みました。error01:ファイルに書込めません
156
162
 
157
163
 
158
164
 
@@ -160,7 +166,7 @@
160
166
 
161
167
 
162
168
 
163
- */
169
+
164
170
 
165
171
 
166
172