2016-08-22 33 views
0

私はC.印刷文字列 - C

の私のコンソール上部のメニューバーを作成しようとしてる私は私の画面(ボーダーなど)の骨格を正常に作成しました私のバーの中にテキストを印刷しようとしています。

私は私のテキストが正しい場所に現れて取得することはできませんが、私のコードのすべてのセクションでは、両方ののprintfやsprintfのを配置しようとしました。

これにはどのようなコマンドを使用するのが最適でしょうか?

Iがこれまで試みたコード:

void setup(void) { 
     printf("Hello World"); 
} 

int main(void) { 
setup_screen(); 
setup(); 
show_screen(); 
} 

ならびに:私はまた、直 'メイン' 関数にコードの両方のセグメントを入れ試みた

void setup(void) { 
     char * str[30]; 
     sprintf(str, "Hello World"); 
     puts(str); 
} 

int main(void) { 
setup_screen(); 
setup(); 
show_screen(); 
} 

+0

動作しなかったコードを表示してください。 –

+0

これまでの研究/デバッグの取り組みを示してください。まず[Ask]ページをお読みください。 –

+0

@SouravGhosh私のコードの説明で私の質問を更新しました。私はあなたのフィードバックのためにあなたに感謝のstackoverflowに新しいです。 – Chynna

答えて

2

コンソールの特定の部分に印刷する統一方法はありません。 PC上にある場合は、の場合は、特定の画面座標に文字を置くために使用できるライブラリがあります()。 Linuxでは、用語がvt100や他の端末をエミュレートするように設定されている場合は、特定の文字列を送信して、カーソルを画面上の特定の場所に送信したり、画面を消去したりすることができます。これらのシーケンスは、通常、ESC文字(0x27)で始まります。 Googleの「vt100エスケープコード」には、これらのシーケンスのリストがあります。

あなたが望むすべてはそれでテキストと国境を印刷する場合は、多分あなたは24×80の画面上の各文字の位置を表し

char screenimage[24][80]; 

のようなものを持っていると思います。スペースを入れて開始し、必要に応じて画像を生成します。最後に、画面が正確に24x80、および印刷が次の行にラップアラウンドした場合、理論的に働くだろう

for (int row=0; row < 80; row++) 
    for (int col=0; col < 24; col++) 
     printf("%c", screenimage[row][col]); 

ようなもので、アレイ全体をプリントアウト。それ以外の場合は、コードを調整する必要があります。

+0

私の更新された質問に表示される 'setup'関数に自分のコードを挿入しようとしました...プログラムを開いたときにコード全体が動作を停止し、コンソールをシャットダウンしました。すべての種類の奇妙なものを印刷した%cの前に 'hello'を含めました。私は今、私の画面の高さと幅の値を次のように入力しようとしました: 'char screenimage [screen_width()] [screen_height()]; のprintf( "%のC"、screenimage [行] [COL]) ため(COL ++ INT COL = 0; COL Chynna

+0

私のメインの関数にprintf( "Hello World") 'を追加しても、コンソールには何も出力されません。私はCでコーディングするのが初めてだから、これが正常かどうかはわかりません。 – Chynna