質問編集履歴
9
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
8
test
CHANGED
File without changes
|
test
CHANGED
@@ -60,7 +60,7 @@
|
|
60
60
|
|
61
61
|
|
62
62
|
|
63
|
-
if ((fd = open("a
|
63
|
+
if ((fd = open("alph.txt", O_RDONLY)) == -1) {
|
64
64
|
|
65
65
|
perror("open");
|
66
66
|
|
@@ -72,7 +72,7 @@
|
|
72
72
|
|
73
73
|
|
74
74
|
|
75
|
-
if ((fd2 = open("a
|
75
|
+
if ((fd2 = open("alph.txt", O_RDONLY)) == -1) {
|
76
76
|
|
77
77
|
perror("open");
|
78
78
|
|
7
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
alph.txtにはアルファベットの文字列が書かれており、今は6文字目を指定してabcdefが表示されるようになものは出来ました。
|
8
8
|
|
9
|
-
|
9
|
+
|
10
10
|
|
11
11
|
表示は
|
12
12
|
|
@@ -14,13 +14,25 @@
|
|
14
14
|
|
15
15
|
ghij.....
|
16
16
|
|
17
|
-
のようにしたいです
|
17
|
+
のようにしたいのですが、
|
18
|
+
|
19
|
+
abcdef
|
20
|
+
|
21
|
+
abcdefgh….
|
22
|
+
|
23
|
+
になってしまいます。
|
18
24
|
|
19
25
|
|
26
|
+
|
27
|
+
同じファイルを参照している為、配列の中身を16で指定すればそうなってしまう事はわかるのですが、どのように改変したら良いでしょうか。
|
28
|
+
|
29
|
+
また、ifを繰り返してしまい見づらいコードになってしまいました。申し訳ございません。
|
20
30
|
|
21
31
|
```
|
22
32
|
|
23
33
|
コード
|
34
|
+
|
35
|
+
|
24
36
|
|
25
37
|
#include <stdio.h>
|
26
38
|
|
@@ -40,15 +52,27 @@
|
|
40
52
|
|
41
53
|
int fd;
|
42
54
|
|
55
|
+
int fd2;
|
56
|
+
|
43
57
|
char buf[256];
|
44
58
|
|
45
|
-
|
59
|
+
char buf2[256];
|
46
60
|
|
47
61
|
|
48
62
|
|
63
|
+
if ((fd = open("abc.txt", O_RDONLY)) == -1) {
|
64
|
+
|
65
|
+
perror("open");
|
66
|
+
|
67
|
+
exit(1);
|
68
|
+
|
69
|
+
}
|
49
70
|
|
50
71
|
|
72
|
+
|
73
|
+
|
74
|
+
|
51
|
-
if ((fd = open("a
|
75
|
+
if ((fd2 = open("abc.txt", O_RDONLY)) == -1) {
|
52
76
|
|
53
77
|
perror("open");
|
54
78
|
|
@@ -66,13 +90,25 @@
|
|
66
90
|
|
67
91
|
}
|
68
92
|
|
93
|
+
if (read(fd2,buf2,16)!= 16){
|
94
|
+
|
95
|
+
perror("read");
|
96
|
+
|
97
|
+
exit(1);
|
98
|
+
|
99
|
+
}
|
100
|
+
|
69
101
|
|
70
102
|
|
71
103
|
buf[6] = '\0'; //6文字めまで表示
|
72
104
|
|
73
|
-
|
105
|
+
buf2[16]='\0';
|
106
|
+
|
107
|
+
|
74
108
|
|
75
109
|
printf("%s\n", buf);
|
110
|
+
|
111
|
+
printf("%s\n",buf2);
|
76
112
|
|
77
113
|
|
78
114
|
|
@@ -83,6 +119,20 @@
|
|
83
119
|
exit(1);
|
84
120
|
|
85
121
|
}
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
if (close(fd2) == -1) {
|
128
|
+
|
129
|
+
perror("close");
|
130
|
+
|
131
|
+
exit(1);
|
132
|
+
|
133
|
+
}
|
134
|
+
|
135
|
+
|
86
136
|
|
87
137
|
|
88
138
|
|
6
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
5
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
4
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
テキストを分割して
|
1
|
+
テキストファイルを分割して表示する方法
|
test
CHANGED
@@ -1,48 +1,20 @@
|
|
1
|
-
C言語について、プログラミング初心者です。
|
2
|
-
|
3
|
-
|
1
|
+
基礎的な事にしようと思い、質問内容を変えさせていただきました。
|
4
2
|
|
5
3
|
|
6
4
|
|
7
|
-
キーボードから指定したテキストファイルを開いて、abcdeなどの文字が入力されていた場合、キーボードから指定した文字数(例えば2と入力するとabとcde)のように分割してそれぞれ別のファイルに保存するプログラムを作りたいです。
|
8
|
-
|
9
|
-
なんとなくの筋道は立てたのですがこの先どうしたら良いか分からないため質問させていただきました。
|
10
5
|
|
11
6
|
|
7
|
+
alph.txtにはアルファベットの文字列が書かれており、今は6文字目を指定してabcdefが表示されるようになものは出来ました。
|
12
8
|
|
13
|
-
|
9
|
+
f以降を表示するにはどうしたら良いですか?
|
14
10
|
|
15
|
-
|
11
|
+
表示は
|
16
12
|
|
17
|
-
|
13
|
+
abcdef
|
18
14
|
|
19
|
-
|
15
|
+
ghij.....
|
20
16
|
|
21
|
-
|
17
|
+
のようにしたいです。
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
C言語について、プログラミング初心者です。
|
26
|
-
|
27
|
-
テキスト内の文字を分割してそれぞれファイルに保存するプログラムを作りたいです。
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
キーボードから指定したテキストファイルを開いて、abcdeなどの文字が入力されていた場合、キーボードから指定した文字数(例えば2と入力するとabとcde)のように分割してそれぞれ別のファイルに保存するプログラムを作りたいです。
|
32
|
-
|
33
|
-
なんとなくの筋道は立てたのですがこの先どうしたら良いか分からないため質問させていただきました。
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
具体的な内容としては
|
38
|
-
|
39
|
-
1.表示結果をout1にコピーしたい
|
40
|
-
|
41
|
-
2.表示されていない残りの文字をout2にコピーしたい
|
42
|
-
|
43
|
-
です。
|
44
|
-
|
45
|
-
宜しくお願い致します。
|
46
18
|
|
47
19
|
|
48
20
|
|
@@ -50,17 +22,15 @@
|
|
50
22
|
|
51
23
|
コード
|
52
24
|
|
25
|
+
#include <stdio.h>
|
53
26
|
|
27
|
+
#include <stdlib.h>
|
54
28
|
|
55
|
-
#include <st
|
29
|
+
#include <sys/types.h>
|
56
30
|
|
57
|
-
#include <st
|
31
|
+
#include <sys/stat.h>
|
58
32
|
|
59
|
-
#include <sys/types.h>
|
60
|
-
|
61
|
-
#include <sys/stat.h>
|
62
|
-
|
63
|
-
#include <fcntl.h>
|
33
|
+
#include <fcntl.h>
|
64
34
|
|
65
35
|
#include <unistd.h>
|
66
36
|
|
@@ -70,25 +40,15 @@
|
|
70
40
|
|
71
41
|
int fd;
|
72
42
|
|
73
|
-
|
43
|
+
char buf[256];
|
74
44
|
|
75
|
-
char file[256];//入力ファイル
|
76
|
-
|
77
|
-
char out1[256];//出力ファイル1
|
78
|
-
|
79
|
-
char out2[256];//出力ファイル2
|
80
|
-
|
81
|
-
|
45
|
+
int x;
|
82
|
-
|
83
|
-
char buf[256]; /* 5 byte characters plus null(\0) */
|
84
|
-
|
85
|
-
scanf("%s%s%s%d",&file,out1,out2,x);で入力、出力1、出力2、分割数をキーボードから入力
|
86
46
|
|
87
47
|
|
88
48
|
|
89
49
|
|
90
50
|
|
91
|
-
if ((fd = open("
|
51
|
+
if ((fd = open("alph.txt", O_RDONLY)) == -1) {
|
92
52
|
|
93
53
|
perror("open");
|
94
54
|
|
@@ -98,7 +58,7 @@
|
|
98
58
|
|
99
59
|
|
100
60
|
|
101
|
-
if (read(fd, buf,
|
61
|
+
if (read(fd, buf, 6) != 6) {
|
102
62
|
|
103
63
|
perror("read");
|
104
64
|
|
@@ -108,11 +68,11 @@
|
|
108
68
|
|
109
69
|
|
110
70
|
|
111
|
-
buf[
|
71
|
+
buf[6] = '\0'; //6文字めまで表示
|
112
72
|
|
113
73
|
|
114
74
|
|
115
|
-
printf("%s\n", buf);
|
75
|
+
printf("%s\n", buf);
|
116
76
|
|
117
77
|
|
118
78
|
|
3
test
CHANGED
File without changes
|
test
CHANGED
@@ -52,17 +52,17 @@
|
|
52
52
|
|
53
53
|
|
54
54
|
|
55
|
-
#include <stdio.h>
|
55
|
+
#include <stdio.h>
|
56
56
|
|
57
|
-
#include <stdlib.h>
|
57
|
+
#include <stdlib.h>
|
58
58
|
|
59
|
-
#include <sys/types.h>
|
59
|
+
#include <sys/types.h>
|
60
60
|
|
61
|
-
#include <sys/stat.h>
|
61
|
+
#include <sys/stat.h>
|
62
62
|
|
63
|
-
#include <fcntl.h>
|
63
|
+
#include <fcntl.h>
|
64
64
|
|
65
|
-
#include <unistd.h>
|
65
|
+
#include <unistd.h>
|
66
66
|
|
67
67
|
|
68
68
|
|
2
test
CHANGED
File without changes
|
test
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
|
24
24
|
|
25
|
-
|
25
|
+
C言語について、プログラミング初心者です。
|
26
26
|
|
27
27
|
テキスト内の文字を分割してそれぞれファイルに保存するプログラムを作りたいです。
|
28
28
|
|
@@ -46,21 +46,23 @@
|
|
46
46
|
|
47
47
|
|
48
48
|
|
49
|
+
```
|
50
|
+
|
51
|
+
コード
|
49
52
|
|
50
53
|
|
51
|
-
```
|
52
54
|
|
53
|
-
#include <stdio.h>
|
55
|
+
#include <stdio.h> /* perror, printf */
|
54
56
|
|
55
|
-
#include <stdlib.h>
|
57
|
+
#include <stdlib.h> /* exit */
|
56
58
|
|
57
|
-
#include <sys/types.h>
|
59
|
+
#include <sys/types.h> /* open, read */
|
58
60
|
|
59
|
-
#include <sys/stat.h>
|
61
|
+
#include <sys/stat.h> /* open */
|
60
62
|
|
61
|
-
#include <fcntl.h>
|
63
|
+
#include <fcntl.h> /* open */
|
62
64
|
|
63
|
-
#include <unistd.h>
|
65
|
+
#include <unistd.h> /* close, read */
|
64
66
|
|
65
67
|
|
66
68
|
|
@@ -132,6 +134,6 @@
|
|
132
134
|
|
133
135
|
|
134
136
|
|
135
|
-
|
137
|
+
|
136
138
|
|
137
139
|
```
|
1
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,28 @@
|
|
1
1
|
C言語について、プログラミング初心者です。
|
2
|
+
|
3
|
+
テキスト内の文字を分割してそれぞれファイルに保存するプログラムを作りたいです。
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
キーボードから指定したテキストファイルを開いて、abcdeなどの文字が入力されていた場合、キーボードから指定した文字数(例えば2と入力するとabとcde)のように分割してそれぞれ別のファイルに保存するプログラムを作りたいです。
|
8
|
+
|
9
|
+
なんとなくの筋道は立てたのですがこの先どうしたら良いか分からないため質問させていただきました。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
具体的な内容としては
|
14
|
+
|
15
|
+
1.表示結果をout1にコピーしたい
|
16
|
+
|
17
|
+
2.表示されていない残りの文字をout2にコピーしたい
|
18
|
+
|
19
|
+
です。
|
20
|
+
|
21
|
+
宜しくお願い致します。
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
```C言語について、プログラミング初心者です。
|
2
26
|
|
3
27
|
テキスト内の文字を分割してそれぞれファイルに保存するプログラムを作りたいです。
|
4
28
|
|
@@ -26,33 +50,43 @@
|
|
26
50
|
|
27
51
|
```
|
28
52
|
|
29
|
-
#include <s
|
53
|
+
#include <stdio.h>
|
30
54
|
|
31
|
-
#include <s
|
55
|
+
#include <stdlib.h>
|
32
56
|
|
33
|
-
#include <
|
57
|
+
#include <sys/types.h>
|
34
58
|
|
59
|
+
#include <sys/stat.h>
|
60
|
+
|
61
|
+
#include <fcntl.h>
|
62
|
+
|
35
|
-
#include <unistd.h>
|
63
|
+
#include <unistd.h>
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
int main(void) {
|
68
|
+
|
69
|
+
int fd;
|
70
|
+
|
71
|
+
ssize_t cc;
|
72
|
+
|
73
|
+
char file[256];//入力ファイル
|
74
|
+
|
75
|
+
char out1[256];//出力ファイル1
|
76
|
+
|
77
|
+
char out2[256];//出力ファイル2
|
78
|
+
|
79
|
+
char x[256]; //分割する値
|
80
|
+
|
81
|
+
char buf[256]; /* 5 byte characters plus null(\0) */
|
82
|
+
|
83
|
+
scanf("%s%s%s%d",&file,out1,out2,x);で入力、出力1、出力2、分割数をキーボードから入力
|
36
84
|
|
37
85
|
|
38
86
|
|
39
87
|
|
40
88
|
|
41
|
-
char file[256];//入力ファイル
|
42
|
-
|
43
|
-
char out1[256];//出力ファイル1
|
44
|
-
|
45
|
-
char out2[256];//出力ファイル2
|
46
|
-
|
47
|
-
int x[]; //分割する値
|
48
|
-
|
49
|
-
scanf("%s%s%s%d",&file,out1,out2,x);で入力、出力1、出力2、分割数をキーボードから入力
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
//ファイルを開く
|
54
|
-
|
55
|
-
if ((fd = open("file", O_RDONLY)) == -1) {
|
89
|
+
if ((fd = open("file", O_RDONLY)) == -1) {
|
56
90
|
|
57
91
|
perror("open");
|
58
92
|
|
@@ -60,7 +94,7 @@
|
|
60
94
|
|
61
95
|
}
|
62
96
|
|
63
|
-
|
97
|
+
|
64
98
|
|
65
99
|
if (read(fd, buf, x) != x) {
|
66
100
|
|
@@ -72,11 +106,11 @@
|
|
72
106
|
|
73
107
|
|
74
108
|
|
75
|
-
buf[x] = '\0';
|
109
|
+
buf[x] = '\0';
|
76
110
|
|
77
111
|
|
78
112
|
|
79
|
-
printf("%s\n", buf);
|
113
|
+
printf("%s\n", buf); //このprintfの表示内容をout1に入力したい。
|
80
114
|
|
81
115
|
|
82
116
|
|
@@ -96,9 +130,7 @@
|
|
96
130
|
|
97
131
|
}
|
98
132
|
|
99
|
-
|
100
|
-
|
101
|
-
|
133
|
+
|
102
134
|
|
103
135
|
コード
|
104
136
|
|