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

回答編集履歴

2

更に追記

2019/12/05 13:15

投稿

pepperleaf
pepperleaf

スコア6385

answer CHANGED
@@ -24,4 +24,8 @@
24
24
  char buff[100];
25
25
  fgets(buff, 100, fp); // 文字列として行を読み込む
26
26
  n = atoi(buff);   // 数字取得
27
- ```
27
+ ```
28
+
29
+ ---さらに、追記 ---
30
+ scanf() --> fscanf(stdin, ...) ですね。で、他の方も書かれているように、cinと混在させるものでは無いです。 速度を気にされているようですが、参考にしたサイトがそう書かれているとの事ですが、何でそうしたのか、解説が無いでしょうか? まずは、その辺りからでしょう。
31
+ scanf()系が遅いのは、単純。読み込みフォーマットを引数の文字列で指定しているので、その解釈時間が余分なコストになるから。cinが遅いのは調べた事無いので推測ですが、scanf()等より、高度な事を内部でしているのでしょう。

1

Cでの方法

2019/12/05 13:15

投稿

pepperleaf
pepperleaf

スコア6385

answer CHANGED
@@ -13,4 +13,15 @@
13
13
  2
14
14
  ```
15
15
  とする。 (cinでの書式付き入力がよく分からない)
16
- `scanf()` は、標準入力からの読み込みですが、cin と混在した場合の挙動が保証されている? のでしょうか。 cinのバッファを切り替えた時点で? です。
16
+ `scanf()` は、標準入力からの読み込みですが、cin と混在した場合の挙動が保証されている? のでしょうか。 cinのバッファを切り替えた時点で? です。
17
+
18
+ -------
19
+ 割り切って Cの入力を使うならば、 `stdin.h` をインクルードし、
20
+ ```C
21
+ /// なんか
22
+ FILE *fp = fopen("../input.txt", "r");
23
+ /// なんか
24
+ char buff[100];
25
+ fgets(buff, 100, fp); // 文字列として行を読み込む
26
+ n = atoi(buff);   // 数字取得
27
+ ```