У меня проблема с моим состоянием:
if(pos + strlen(string) > 0){
printf("#");
string = &string[pos*-1];
pos = 0;
}
в процедуре:
void text_buffer(bool strict, int x, int y, char *string){
if(active_buff){
int pos = active_buff -> width * y + x;
if(pos < 0){
int cnt = strlen(string) + pos;
printf("%d %s", cnt, cnt > 0 ? "true" : "false");
if(pos + strlen(string) > 0){
printf("#");
string = &string[pos*-1];
pos = 0;
}
else
return;
}
if(pos >= active_buff -> length - 1)
return;
char *copy = &(active_buff -> buff[pos]);
if(strict)
for(; x < active_buff -> width && *copy && *string; copy++, string++, x++)
*copy = *string;
else
for(; *copy && *string; copy++, string++)
*copy = *string;
}
}
Например: когда я передаю текст длиной 15 символов «Hello World! 99», а переменная «pos» вычисляется как -2000, тогда упомянутое мною условие будет иметь значение true.
Но если я сохраню (pos + strlen(string)) в переменную 'cnt', а не оставлю вычисление в состоянии, тогда его значение будет 'false'.
Понятия не имею, я пытался поставить (pos + strlen(string)) в круглые скобки в этом условии if, но все равно не повезло.
actve_buff
и где он определяется? - person EOF   schedule 29.10.2014