April 1, 2003
hålller på med ett mini projekt i C...ett tunnare version av linux editorn ED...har ett problem bara...
min delete funktion fungerar inte som den skall...den skall ta bort den rad markören befinner sig på för tillfället, men just nu tar funktionen bort all text i hela text filen..o jag et inte varför...
koden:
int delete( char text[], int cursor, int* nr_of_lines, int* success )
{
int line_end,
line_start;
int i, j;
char temp[MAX_ROW*MAX_LINES] = "";
if( !is_empty(text) ){
get_line_n( text, cursor, &line_start, &line_end );
j=0;
for(i=0; line_start>i ; i++){
if(i==EOF){
break;
}
text[i] = temp[j];
j++;
}
for(i=line_end; i<(MAX_LINES*MAX_ROW); i++){
text[i] = temp[j];
j++;
}
temp[j] = '';
strcpy( text, temp );
/* Cant move cursor before first line */
if( cursor > 0 ){
cursor--;
}
(*nr_of_lines)--;
*success = TRUE;
}else{
*success = FALSE;
}
return cursor;
}
line_start och line_end är två pekare som pekar på början och slutet av den rad man befinner sig på, och det är mellan dessa pekar man skall ta bort tecken från....men som skrivet, just nu tar funktionen bort allt istället...nån som kan hjälpa mig?
July 4, 2003
Nu har jag bara skummat igenom koden så det här kan vara helt uppåt väggarna men som det ser ut så skapar du character arrayen temp och sätter den till "". Sen får den inget värde men du kopierar ändå temp[j] till text[i] vilket borde resultera i att text nollas.
Kan det vara så att get_line_n borde placera något i temp eller var är det meningen att temp ska få sitt värde?
1 Guest(s)