回答編集履歴

5

コード編集

2017/07/06 14:39

投稿

majiponi
majiponi

スコア1720

test CHANGED
@@ -9,6 +9,8 @@
9
9
 
10
10
 
11
11
  追記:2がバグの原因です。見た感じ、偶数バイトのファイルでバグりそう(1ループごとに2字読んでいて、EOFはループ条件のとこで発生し、種類表示部にたどりつけない)ですが、省略している部分で、ファイルが空か調べるために1文字読み込んでいるため、奇数バイトのときバグっているのだと思います。
12
+
13
+
12
14
 
13
15
  ```C++
14
16
 
@@ -34,6 +36,8 @@
34
36
 
35
37
  cout << "ASCII" << endl;
36
38
 
39
+ }
40
+
37
- }```
41
+ ```
38
42
 
39
43
  サンプル加筆しました。分からないところは随時補足します。

4

加筆修正

2017/07/06 14:39

投稿

majiponi
majiponi

スコア1720

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  int c;
24
24
 
25
- while((c = ifs.get()) != EOF && c >= 0x9);
25
+ while((c = ifs.get()) >= 0x9);
26
26
 
27
27
  if( c != EOF ){
28
28
 
@@ -36,4 +36,4 @@
36
36
 
37
37
  }```
38
38
 
39
- これで解決しなければその旨書てください
39
+ サンプル加筆ました。分からないところは随時補足します

3

バグの修正

2017/07/06 13:35

投稿

majiponi
majiponi

スコア1720

test CHANGED
@@ -12,10 +12,28 @@
12
12
 
13
13
  ```C++
14
14
 
15
- while((c=ifs.get())!=EOF){
15
+ ifstream ifs(path);
16
16
 
17
+ if(!ifs){
18
+
19
+ cout << "fail to open";
20
+
21
+ }
22
+
23
+ int c;
24
+
25
+ while((c = ifs.get()) != EOF && c >= 0x9);
26
+
17
- /*todo*/
27
+ if( c != EOF ){
28
+
29
+ cout << "binary" << endl;
30
+
31
+ }
32
+
33
+ else{
34
+
35
+ cout << "ASCII" << endl;
18
36
 
19
37
  }```
20
38
 
21
- というイディオムを使ってみては? これで解決しなければその旨書いてください。
39
+ これで解決しなければその旨書いてください。

2

追記

2017/07/06 13:33

投稿

majiponi
majiponi

スコア1720

test CHANGED
@@ -2,9 +2,13 @@
2
2
 
3
3
 
4
4
 
5
- 1、ファイルの中身が書いてないこと。サイズ等も知りい。
5
+ 1、ファイルの中身→拝見しまし、失礼しました
6
6
 
7
7
  2、ループ条件を書いた後、そのループ内でifs.getを呼び出していること。
8
+
9
+
10
+
11
+ 追記:2がバグの原因です。見た感じ、偶数バイトのファイルでバグりそう(1ループごとに2字読んでいて、EOFはループ条件のとこで発生し、種類表示部にたどりつけない)ですが、省略している部分で、ファイルが空か調べるために1文字読み込んでいるため、奇数バイトのときバグっているのだと思います。
8
12
 
9
13
  ```C++
10
14
 
@@ -14,4 +18,4 @@
14
18
 
15
19
  }```
16
20
 
17
- というイディオムを使ってみては?
21
+ というイディオムを使ってみては? これで解決しなければその旨書いてください。

1

誤字修正

2017/07/05 15:51

投稿

majiponi
majiponi

スコア1720

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  2、ループ条件を書いた後、そのループ内でifs.getを呼び出していること。
8
8
 
9
- ```C
9
+ ```C++
10
10
 
11
11
  while((c=ifs.get())!=EOF){
12
12