就像我的最后一个问题一样,这与我的学校项目有关。我必须在 C 中做一个“类似推特”的程序,但我遇到了一个小布局问题。请记住,我知道此代码未优化,我首先“玩弄”以使基础工作正常。
这是我遇到问题的功能(不要注意带有所有\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”,然后您将被卡住(尽管计数器仍然会下降而不移动)
如果您对如何解决此问题或如何改进此问题有任何想法,欢迎一切!
先感谢您 !