No.2ベストアンサー
- 回答日時:
エスケープシーケンスが使えないなら、恐らくWindowsのAPIを使わなくてはなりません。
GetConsoleScreenBufferInfoでコンソールのサイズなどを取得し、
ReadConsoleOutputでコンソールの内容を取得し、
不要な行を消去して、
WriteConsoleOutputで書き込めば良いはずです。
詳細はGoogleさんに聞けば、サンプルが見つかると思います。
しかし、printf等は検索結果やエラー情報など、後から消す必要の無いものを表示するためのものだと思います。
sorokukuさんがどのようなプログラムを製作中なのかはわかりませんが、無理に消す方法を探すよりも、普通のWindowsアプリにしてテキストコントロールやラベルで表示したほうが簡単だと思います。Visual C++ Expressでも.NETを使ったアプリなら作れるはずですし、Turbo C++と言う手もあります。
No.3
- 回答日時:
こんにちは。
> printfでエスケープシーケンスを使っても,うまく文字を消すことができなかったです.
とありますが、具体的にどのようなコード(プログラムのソース)を書かれたのでしょうか?
差し支えなければ、その部分(文字列を出力する部分~その文字列を消去する部分)のソース
(プログラムが小さければできれば全ソース)を提示して頂けないでしょうか?
その方が、回答者の方も問題を把握でき具体的なアドバイスも貰い易いかと思います。
参考までに、エスケープシーケンスを使用した文字列消去(行単位)のサンプルプログラムを
作ってみましたので、宜しければ試してみて下さい。
お使いの環境で上手くビルド及び実行できるかどうか判りませんが、多少なりともヒントになれ
ば幸いに思います。
なお、本サンプルは、当方では「Windows98SE+Visual C++ 5.0」の環境で作成&実行テスト
を行なっています。
また、本サンプルで使用しているエスケープ・シーケンスに関して下記サイトを参考にさせて頂きました。
■参考サイト
ANSI.SYS - キーボードと画面の拡張制御のサポート [FPCU]DOS/V&Windowsコマンド・プロンプト・リファレンス
http://www.fpcu.jp/dosvcmd/ansi.htm
■サンプルプログラム
/*
* tesc.c : エスケープシーケンスによる1行消去のテストプログラム
*
*【概要】
* コンソール画面に出力した文字列を行単位に出力した行数分消去を
* 行ないます。
*【補足】
* 1)本プログラムは、Windows系OS用のコンソールプログラムです。
* 2)コンソール画面のカーソル制御などのために、ANSIエスケープ・
* シーケンスを使用しています。
*
*<使用しているエスケープ・シーケンス>
* ※下記中の"ESC"はエスケープコード(0x1B)を意味します。
* ・ESC[s :カーソル位置の保存
* ・ESC[u :カーソル位置の復元
* ・ESC[nnA :カーソルを上にnn行移動(カーソルが最上行の時は無視される)
* ・ESC[K :現在行のカーソル位置以降を消去
*/
#include <stdio.h>
#include <conio.h>
/* define const */
#define ESC "\x1b" //エスケープ文字(ESC:0x1B)の定義
int main(void)
{
int i, icnt;
/* ダミー文字列の表示(1行表示毎に行カウンタを+1する) */
icnt = 0; //行カウンタのリセット
printf("01:*** 1行目***\n"); icnt++;
printf("02:*** 2行目***\n"); icnt++;
printf("03:*** 3行目***\n"); icnt++;
printf("04:*** 4行目***\n"); icnt++;
printf("05:*** 5行目***\n"); icnt++;
/* 表示した文字列の消去(現在行から遡って行カウンタ分の1行消去を行なう) */
_cputs(ESC"[s"); //カーソル位置の保存(現在行でカーソルが左端にあることが前提)
for(i=0; i<icnt; i++){ //行カウンタ分ループ
_cputs(ESC"[1A"); //カーソルを上に1行移動(カーソルが最上行の時は無視される)
_cputs(ESC"[K"); //現在行のカーソル位置以降を消去
}
_cputs(ESC"[u"); //カーソル位置の復元
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# 【C言語】全角文字の配列を、全角のまま1文字ずつ出力する方法 4 2023/05/09 15:08
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Excel(エクセル) Excelについて▶あるセルに文字を入力すると、別のセルに色がつく(条件付き書式) 1 2022/03/27 16:43
- iPhone(アイフォーン) スマホ文字消しにくい 3 2023/07/27 15:23
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
coutで出力した文字を消去するためには?
C言語・C++・C#
-
C言語で今まで表示していた画面の消すには?
C言語・C++・C#
-
コンソール画面のクリアの方法
C言語・C++・C#
-
-
4
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
5
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
6
標準出力の上書き
C言語・C++・C#
-
7
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
8
関数から配列を返すには?
C言語・C++・C#
-
9
#include <Windows.h>というヘッダファイルについて
C言語・C++・C#
-
10
ファイル内のデータを1行削除する方法
C言語・C++・C#
-
11
scanf"でエンターで改行させない方法"
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
10個出力で改行したいのですが...
-
テキストカーソル位置の取得
-
c言語でAからZまでを表示する...
-
4の倍数を論理演算で表す。。
-
C言語 プログラミング
-
分数を表示するプログラム(長...
-
C言語での組み合わせの問題につ...
-
C言語で四則演算を使って10を作...
-
printfのコードは?
-
答えを教えてください
-
C言語についてです学籍番号、名...
-
C言語のソースをC++言語に変換...
-
【C言語教えてください】sin波...
-
プログラミングについての質問です
-
コーディング
-
C言語プログラミング 漸化式に...
-
1秒で動くインターバルタイマ
-
C言語で四則演算を使って結果が...
-
C++を使ってのテイラー展開
-
台形の面積を求めるプログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
既約分数の表示プログラム
-
printf で二進表示を行いたい。
-
8人分のテストの点数を入力し、...
-
printf( " %2d", p * q );
-
strcmp
-
CTRL+Dでループを抜けるには
-
4の倍数を論理演算で表す。。
-
%P と %X の違い
-
【C言語教えてください】sin波...
-
c言語でAからZまでを表示する...
-
cshの文字列操作(0埋め)
-
万年カレンダーのC言語プログラ...
-
コマンドラインに出力した文字...
-
scanfに文字が入力されたときに...
-
ホームページをC言語で作りたい...
-
改行について 1行に何個かづ...
-
コンパイルエラーについて
-
台形の面積を求めるプログラム
-
なぜgccはstdio.hをインクルー...
おすすめ情報