回答編集履歴

2

更に追記

2019/12/05 13:15

投稿

pepperleaf
pepperleaf

スコア6383

test CHANGED
@@ -51,3 +51,11 @@
51
51
  n = atoi(buff);   // 数字取得
52
52
 
53
53
  ```
54
+
55
+
56
+
57
+ ---さらに、追記 ---
58
+
59
+ scanf() --> fscanf(stdin, ...) ですね。で、他の方も書かれているように、cinと混在させるものでは無いです。 速度を気にされているようですが、参考にしたサイトがそう書かれているとの事ですが、何でそうしたのか、解説が無いでしょうか? まずは、その辺りからでしょう。
60
+
61
+ scanf()系が遅いのは、単純。読み込みフォーマットを引数の文字列で指定しているので、その解釈時間が余分なコストになるから。cinが遅いのは調べた事無いので推測ですが、scanf()等より、高度な事を内部でしているのでしょう。

1

Cでの方法

2019/12/05 13:15

投稿

pepperleaf
pepperleaf

スコア6383

test CHANGED
@@ -29,3 +29,25 @@
29
29
  とする。 (cinでの書式付き入力がよく分からない)
30
30
 
31
31
  `scanf()` は、標準入力からの読み込みですが、cin と混在した場合の挙動が保証されている? のでしょうか。 cinのバッファを切り替えた時点で? です。
32
+
33
+
34
+
35
+ -------
36
+
37
+ 割り切って Cの入力を使うならば、 `stdin.h` をインクルードし、
38
+
39
+ ```C
40
+
41
+ /// なんか
42
+
43
+ FILE *fp = fopen("../input.txt", "r");
44
+
45
+ /// なんか
46
+
47
+ char buff[100];
48
+
49
+ fgets(buff, 100, fp); // 文字列として行を読み込む
50
+
51
+ n = atoi(buff);   // 数字取得
52
+
53
+ ```