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

回答編集履歴

1

追記

2019/01/14 07:41

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -7,4 +7,61 @@
7
7
  [http://www.orchid.co.jp/computer/cschool/CREF/read.html](http://www.orchid.co.jp/computer/cschool/CREF/read.html)
8
8
 
9
9
  "c" ファイル 読み込み
10
- などで google 検索してファイルの内容全体を読み込む方法を調査してみてください。
10
+ などで google 検索してファイルの内容全体を読み込む方法を調査してみてください。
11
+
12
+ 追記
13
+ ファイル内容をすべて読み込み, その内容を表示、さらに 改行や ; で区切り、SPAECE は無視するようなものを書いてみました。
14
+ 質問文にある aaa.txt が処理だけるだけのものです。エラー処理や改行コードの OS ごとの差、 SPACE 文字の扱い などは調節をすることが必要です。
15
+ sss.c
16
+ ```c
17
+ #include <stdio.h>
18
+ #include <string.h>
19
+
20
+ int main(void) {
21
+ FILE * fp;
22
+ char buff[100+1];
23
+ int rc;
24
+
25
+ fp = fopen("aaa.txt", "r");
26
+ if (fp == NULL) {
27
+ printf("ファイルオープンエラー\n");
28
+ return -1;
29
+ }
30
+
31
+ rc = fread(buff, 1, 100, fp);
32
+ if (rc == -1) {
33
+ printf("ファイル読み込みエラー\n");
34
+ }
35
+ fclose(fp);
36
+
37
+ buff[rc] = '\0';
38
+ printf("%s\n", buff);
39
+
40
+ char exps[10][20];
41
+ int exp_num = 0;
42
+ exps[0][0] = '\0';
43
+ char * exp_p = exps[0];
44
+
45
+ for (char * p = buff; *p; p++) {
46
+ char c = *p;
47
+ if (c == '\n' || c == ';') {
48
+ *exp_p = '\0';
49
+ if (strlen(exps[exp_num]) > 0) {
50
+ exp_num++;
51
+ }
52
+ exp_p = exps[exp_num];
53
+ *exp_p = '\0';
54
+ } else if (c != ' ') {
55
+ *exp_p++ = c;
56
+ }
57
+ }
58
+
59
+ for (int i = 0; i < exp_num; i++) {
60
+ printf("%d\t[%s]\n", i, exps[i]);
61
+ }
62
+ return 0;
63
+ }
64
+ ```
65
+
66
+ 実行例
67
+ ![イメージ説明](5855f78ba0d5f098664c4bb54f399342.png)