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

回答編集履歴

2

マークダウンを追加

2020/03/08 04:38

投稿

TsukubaDepot
TsukubaDepot

スコア5086

answer CHANGED
@@ -34,7 +34,7 @@
34
34
  ```
35
35
  Xcodeで`-lncurses`に相当するオプションを指定できればXcodeでもリンクできるとおもいます。
36
36
 
37
- 追記(別解)
37
+ #追記(別解)
38
38
 
39
39
  Windows での例で示された方法も、macOSでやれないわけではありません。
40
40
  `system()` で `clear`を呼び出せば良いのですが、フルパスで指定する必要があります。

1

別解を掲載

2020/03/08 04:38

投稿

TsukubaDepot
TsukubaDepot

スコア5086

answer CHANGED
@@ -32,4 +32,30 @@
32
32
  ```
33
33
  % gcc a.c -lncurses
34
34
  ```
35
- Xcodeで`-lncurses`に相当するオプションを指定できればXcodeでもリンクできるとおもいます。
35
+ Xcodeで`-lncurses`に相当するオプションを指定できればXcodeでもリンクできるとおもいます。
36
+
37
+ 追記(別解)
38
+
39
+ Windows での例で示された方法も、macOSでやれないわけではありません。
40
+ `system()` で `clear`を呼び出せば良いのですが、フルパスで指定する必要があります。
41
+
42
+ ```C
43
+ #include<stdio.h>
44
+ #include<stdlib.h>
45
+ #include<unistd.h>
46
+
47
+ int main(void){
48
+ printf("Hello World!");
49
+
50
+ fflush(stdout);
51
+ sleep(5);
52
+
53
+ system("/usr/bin/clear");
54
+
55
+ printf("Hello World! 2");
56
+ }
57
+ ```
58
+
59
+ ただし注意しなければいけないのは、**標準入出力はバッファリングするので**、たとえば画面の表示を止めている`sleep()`関数の前で、`fflush(stdout)`を使って**意図的に出力を強制する**必要があります(試しに、`fflush()`を削除して実行してみれば違いがわかるかと思います)。
60
+
61
+ 一方、この例であれば特別なライブラリは使っていませんので、リンカの指定は不要というメリットもあります。