ページ 11

表示された文字の書き換えについて

Posted: 2012年1月19日(木) 11:57
by アマ・プログラマ
一旦文字を表示した後に、それを削除して、そこに新たな文字を表示させるにはどうすればいいでしょうか?
例:
printf("abcdefg\n");//これでまずはabcdefgを表示させる。
その後、表示されたabcdefgを消去して、元々abcdefgがあった場所に新たに
hijklmnを表示させるにはどうすればいいでしょうか

Re: 表示された文字の書き換えについて

Posted: 2012年1月19日(木) 12:00
by beatle
Cの標準ライブラリを使っている限りはできないと思います.どうしてもやりたいなら,OSに依存した書き方になると思いますから,開発対象のOSやコンパイラなどを教えて下さい.

Re: 表示された文字の書き換えについて

Posted: 2012年1月19日(木) 12:12
by softya(ソフト屋)
前の質問を放置しないようにお願いします。解決なら解決チェックを!
「HPを減少させるにはどうすればいいでしょうか • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=10017

Re: 表示された文字の書き換えについて

Posted: 2012年1月22日(日) 10:53
by 天津飯

コード:

#include <stdio.h>
#include <stdlib.h> /*system()*/
#include <conio.h>  /*kbhit()*/

int main(){
	char str1[8]="ABCDEFG";
	char str2[8]="HIJKLMN";

	printf("%s",str1);

	while(!kbhit());  /*WaitKey()の代用*/
	system("cls");      /*画面クリア*/

	printf("%s\n",str2);

	return 0;
}
自分はWindowsを使っています。
上のようにsystem("cls")で画面をクリアするというのはダメでしょうか?

それかちょっと調べてみたところ、SetConsoleCursorPosition()というものでgotoxy()に似たようなことができるらしいので、
下のようにしてみるといいと思います。(多分Windowsの人しかできないだろうけど・・・)

コード:

#include <stdio.h>
#include <windows.h>  /*SetConsoleCursorPosition()*/

void gotoxy(int x,int y){
	COORD coord;
	coord.X=x;
	coord.Y=y;

	SetConsoleCursorPosition( GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

int main(){

	char str1[8]="ABCDEFG";
	char str2[8]="HIJKLMN";

	printf("%s",str1);

	Sleep(1000);  //1000ミリ秒の待ち

	gotoxy(0,0);  //0,0座標にセット
	printf("%s\n",str2);

	Sleep(1000);  //1000ミリ秒の待ち

	gotoxy(0,0);  //0,0座標にセット
	printf("%s%s\n",str1,str2);

	Sleep(1000);  //1000ミリ秒の待ち

	return 0;
}
※gotoxy(x,y) は,カーソルを画面上の (x,y) へ移動する関数です。