Word wrap mindig túl megy kb. 10 karakterrel
2021-06-08T20:27:51+02:00
2021-06-08T22:03:59+02:00
2022-08-12T03:10:29+02:00
Almaember1098
Szerk.: Jelentem hogy a prog.hu volt olyan kedves, és berakta a posztomat az MS Word kategóriába. Nem én csináltam, és ennek a kérdésnek semmi köze a Wordhöz.

Hello!

Dolgozok már egy ideje egy C projekten, és most elakadtam.

Van egy függvényem, aminek szét kellene osztania egy hosszú sort bizonyos hosszúságú rövidebb sorokra (alapértelmezetten 80).

Itt a függvény:

void word_wrap(char *str, int lineSize) { if (str == NULL) { return; } int strLen = strlen(str); if (strLen <= lineSize) return; int currentWordSize = 0, lineLen = 0; char *lastWordLoc = NULL; for (int i = 0; i < strLen; ++i) { if (str[i] == ' ') { if (lineLen + currentWordSize >= lineSize) { printf("Newline at %d! LINE %d\n", i, lineLen); if (lastWordLoc != NULL) *lastWordLoc = '\n'; lineLen = 0; } else { lineLen += currentWordSize; } currentWordSize = 0; lastWordLoc = str + i; } else { ++currentWordSize; } } }
A printf csak debughoz van ott, kiszedem ha rájövök mi baja van.
Na most, a probléma az, hogy mindig naggyából 10-15 karakterrel később vágja el a sorokat, mint kéne, és nem tudok rájönni arra, hogy miért.

Ez a debug kimenet:

Newline at 103! LINE 75 Newline at 206! LINE 75 Newline at 309! LINE 75 Newline at 412! LINE 75 Newline at 515! LINE 75 Newline at 618! LINE 75 Newline at 725! LINE 75 Newline at 828! LINE 76 Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!Just a test! Just a test! Just a test! Just a test! Just a test! Just a test! Just a test!

A "Just a test!" rész mind egy sor a bementi fájlban.

Előre is köszönöm a segítséget!
Mutasd a teljes hozzászólást!
Ami nekem ránézésre feltűnik, hogy nem számolod be a szóközöket a sor hosszába. Ha beírok negyven darab "a" betűt, mindegyik közt egy-egy szóközzel, akkor nálad a lineLen csak 40 lesz. Azokat a szóközöket, amiket nem írsz át újsorra, valahogy a sor hosszába bele kéne számolni.
Mutasd a teljes hozzászólást!

abcd