最後の質問と同様に、これは私の学校のプロジェクトに関するものです。C で「twitter のような」プログラムを作成する必要があり、レイアウトに小さな問題があります。このコードは最適化されていないことを認識しており、基本を機能させるために最初に「遊んでいる」ことを覚えておいてください。
これが私が問題を抱えている機能です(すべての \b で printf に注意を払わないでください。一時的で非常に面倒です):
printf("Saisissez votre message (%d caracteres max):",DIM_MSG); //Message entry character by character
//Boucle de saisie de message caractere par caractere
while((temptweet=getch()) != '\r' )
{
if ( temptweet == '\b' ) {
if( i>0 ){
printf ( "\b\b\b\b\b\b\b\b\b\b%c%c%c%c%c%c%c%c%c%c\b\b\b\b\b\b\b\b\b\b", ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',' ',' ');
}
if ( i != 0) {
printf ( "\b%c\b", ' ' );
i--;
printf(" %03d / %d",i,DIM_MSG); //Shows the remaining chracters left
}
}
else if (i<DIM_MSG){
flag=0;
if(i!=0){
printf ( "\b\b\b\b\b\b\b\b\b\b%c\b", ' ' );
}
tweet[i] = (char)temptweet;
printf("%c",tweet[i]);
if(i>=(DIM_MSG-WARN)){Color(12,0);}
printf(" %03d / %d",i+1,DIM_MSG);
if(i>=(DIM_MSG-WARN)){Color(7,0);}
i++;
}
if( i==0 && flag!=1){
printf ( "\b\b\b\b\b\b\b\b\b\b%c%c%c%c%c%c%c%c%c%c\b\b\b\b\b\b\b\b\b\b", ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',' ',' ');
flag=1;
}
}
tweet[i]='\0';
この関数を使用すると、ユーザーはメッセージを入力し、入力できる文字数が表示されます (DIM_MSG 定数はこのサイズです)。基本的に、ユーザーが入力すると、テキストの右側に書かれた文字数が表示されます (テキスト ボックスの下部にある twitter のようなものです)。
私が抱えている問題は、長いものを入力してコマンドウィンドウの横に到達すると、「壊れて」次の行に移動し、ウィンドウに次のようなものが表示されることです。
Saisissez votre message (140 caracteres max):testtesttesttesttesttestt 025 / 140
esttesttesttetstesttesttesttesttesttesttesttesttesttesttesttesttesttes 095 / 140
ttest 100 / 140
気になるのは、テキストを削除すると (バックスペース キーまたは '\b' )、現在の行で停止することです。例を見ると、最後の行の「ttest」を削除できて、スタックします (ただし、カウンターは移動せずにダウンします)。
これを修正する方法、またはこれを改善する方法についてのアイデアがあれば、すべて大歓迎です!
前もって感謝します !