Oto kod dwoch prostych funkcji pod DOS'a, ktore sluza do wpisu stringa o okreslonej dlugosci (potrzebne byly do wiekszego programu, ktory pisze zeby sie wprawic w C++):
void Komunikat(char *Komunikat)
{
register int i;
int x,y;
char bufor[640];
size_t rozmiar, lewy;
x=wherex(); y=wherey();
rozmiar = strlen(Komunikat);
if (rozmiar>76) strncpy(Komunikat, Komunikat, 76);
gettext(1, 11, 80, 14, &bufor[0]);
lewy=(80-(rozmiar+4))/2;
gotoxy(lewy,11); printf("Ú"); for(i=1;i<=rozmiar+2;i++) printf ("Ä"); printf("ż");
gotoxy(lewy, 12); printf("ł %s ł", Komunikat);
gotoxy(lewy, 13); printf("ł");
if ((rozmiar%2)!=0) printf(" ");
for(i=1;i<(rozmiar-2)/2;i++) printf(" ");
textattr(0x70); cprintf(" OK ");for(i=1;i<(rozmiar-2)/2;i++) printf(" "); printf("ł");
textattr(0x07);
gotoxy(lewy, 14); printf("Ŕ"); for(i=1;i<=(rozmiar+2);i++) printf("Ä"); printf("Ů");
gotoxy(80,25);
do {} while (getch()!=13);
puttext(1, 11, 80, 14, &bufor[0]);
gotoxy(x,y);
}
int Wpis(char *wyraz, int rozmiar, int x, int y)
{
char roz[2]="";
int flaga=0;
int i=-1;
int bufor;
itoa(rozmiar, roz, 10);
char *Kom="Limit znakow dla tego rodzaju danych wynosi ";
_fstrcat(Kom, roz);
for(;;)
{
if (i<rozmiar) i++;
gotoxy(x+i, y);
bufor = getch();
if (bufor==8)
{
if (i==0) {i--; continue;}
else
{
gotoxy(x+i-1, y);
printf(" ");
wyraz[i-1]='\0';
i-=2;
continue;
}
}
else
{
if (bufor==27) {flaga=1; break;}
if (bufor==13) break;
if (bufor==0) {getch(); i--; continue;}
if (i==rozmiar) Komunikat(Kom);
else
{
wyraz[i]= (char) bufor;
printf("%c", bufor);
}
}
}
if (flaga==1) strcpy(wyraz, "");
return flaga; //0-OK, 1-ESC
}
Sprobujcie skompilowac (pod DOS, model Large) program ktory wykorzystuje Wpis kilka razy pod rzad i zobaczcie co wyprawia. Wiem tylko tyle ze to ma cos wspolnego z zastosowaniem funcj itoa i strcat. Wiecie ja tam dopiero sie ucze C wiec jesli jest tu jakis oczywisty blad to sie nie smiejcie, ale dla mnie to jest niepojete:) A moze u was bedzie dzialalo OK:)? [glowa]