C言語関係掲示板

過去ログ

No772 表示した文字の削除

[戻る] [ホームページ]
No.9885

表示した文字の削除
投稿者---Cっぽこ(2003/10/19 17:49:23)


初心者ですがなにとぞお願いします

printfやcoutで出力した文字を消すことはできるでしょうか?

No.9887

Re:表示した文字の削除
投稿者---YuO(2003/10/19 18:31:05)


>printfやcoutで出力した文字を消すことはできるでしょうか?

一応,\bを出力すると出力位置を一文字戻せるので,
そこへ' 'を出力すると,文字が消える「かも」しれません。


No.9894

Re:表示した文字の削除
投稿者---aki(2003/10/20 01:38:30)


>初心者ですがなにとぞお願いします
>
>printfやcoutで出力した文字を消すことはできるでしょうか?

'\r'もよろしく。stdoutが指すストリームが画面とつながっていれば
'\r'の出力は復帰を意味します。


No.9897

Re:表示した文字の削除
投稿者---Cっぽこ(2003/10/20 10:54:05)


\bや\rの後に' 'を入れれば消えましたが改行してからでは消えませんでした。
改行した後でも消える方法はないでしょうか?

printf("abcdef\b "); /* 消える */
printf("abcdef\n"); /* 消えない */
printf("\b ");

No.9900

Re:表示した文字の削除
投稿者---YuO(2003/10/20 11:06:58)


>\bや\rの後に' 'を入れれば消えましたが改行してからでは消えませんでした。
>改行した後でも消える方法はないでしょうか?

環境によります。
すべての環境で使える方法はありません。
#\r/\b含む。

No.9908

Re:表示した文字の削除
投稿者---aki(2003/10/20 11:38:45)


>\bや\rの後に' 'を入れれば消えましたが改行してからでは消えませんでした。
>改行した後でも消える方法はないでしょうか?
>
>printf("abcdef\b "); /* 消える */
>printf("abcdef\n"); /* 消えない */
>printf("\b ");

エスケープシーケンスを使う方法があります。試して使えたら、過去
ログを検索してエスケープシーケンスについて調べてみてください。
ただしこの方法は移植性はありません。

#include <stdio.h>

int main(void)
{
    printf("abcd\n");

    printf("\x1b[1A");  /* 表示位置を上に1つ移動 */
    printf("*");

    printf("\x1b[2C");  /* 表示位置を右に2つ移動 */
    printf(" ");

    return 0;
}

全部消して書き直すという手もあります。

#include <stdio.h>
#include <stdlib.h>   /* system関数のため */

int main(void)
{
    system("cls");     /* 画面をクリア。"cls"の部分は環境次第 */
    printf("abcd\n");

    system("cls");
    printf("*bc \n");
    return 0;
}