24. maj 2002 - 12:53Der er
13 kommentarer og 2 løsninger
Fjern nulterminering
Hejsa ..
Jeg ville høre om der var nogle der havde en ide til hvordan jeg kan lave en funktion der modtager en buffer (fx char tekst[200]), og resultere en streng uden nultermineringsstrenge.
Jeg har nemlig en stor buffer son består af mange strenge med hver deres \0, men de skal fjernes da der ikke må væres sådanne da den skal leveres videre til noget cobol.'
Dvs jeg kalder min fubktion med en buffer[1600], funktionen ligger værdier fra bufferen over i en struct, så kalder programmet en xlm combonent, som returnere nogle data, som jeg ligger i min retopl struktur.
Det er denne struktur som jeg skal levere tilbage som ud[]
Når du kopierer din struct over i en char buffer, så bliver ALLE tegn jo kopieret over. 1. De 'valide' ascii tegn 2. dine null termineringer 3. samt alle resterende byes, som ikke bruges.
Lad os f.eks tage nedenstående felter.
char kundenummer [11]; char brugernavn [9];
kundenummer = "1200" brugernavn = "laffe"
I kundenummer bruges der jo kun 5 bytes. 4 til nummeret og 1 til '\0'. Hvad med de resterende 6 bytes i bufferen.
Hvad ståre der i dem ?
De bliver jo også kopieret med over, og lagt ind i den ene lange streng (OutBuffer) som du vil ende med.
F.eks:
OutBuffer=1200??????laffe????
ved ? ved vi ikke hvad der kan stå. Det vil være tilfældig.
Mit forslag er at kopiere alle felter enkelt/strenge over i den lange streng en ad gangen. Så har du helt styr på, hvad der kommer med.
Jeg har lavet felterne 1 større en de skal dvs 11 i stedet for 10 osv, da der skulle være plads til en nulterminator, men nå jeg skal returnere dem, skal de returneres som 10, 8 osv om med opfyldning af blanke.
Mvh Michael F
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.