Fordi du så kan bruge x3->kundeid og x3->fejlnr fuldstændigt ligesom du ellers ville kunne have brugt x1.kundeid og x1.fejlnr men: - du undgår at have 2 gange 3000 bytes i memory med samme data (sparer memory) - du undgår at kopiere 3000 bytes (sparer CPU tid)
Dvs man kan ikke tage en streng og "ligge ovenpå" en structur i c ?
Problemet er at den streng der skal føres over i structuren kommer fra et eksternt program. Er jeg nødsaget til at lave en funktion der splitter strengen up og flytter data)
Den har sikkert en eller anden for for token så du kan skille de forskellige strenge fra hinanden (f.eks endline). Er det tilfældet, kan du bruge strtok til at skille dem fra hinanden med.
Jeg tror dine problemer skyldes at du overfører en struct i en streng. I C er alle strenge (jo) termineret med chr(0) - dvs. alle funktioner i C (og dermed faktisk også i Windows kernen) lavet sådan at de stopper behandlingen af strengen når de når til første chr(0). ('\x0') I dit eksempel betyder det omvendt at printf("Fejl nr. : %s", fejlrec.nr) *IKKE* stopper udskriften når de 10 tegn der egentlig er fejlteksten, er skrevet - men derimod først når den når til chr(0).
Du kan godt får det du har lavet til at fungere (jeg synes i den forbindelse også du skal bruge arne_v's løsning med blot at definere en pointer, og så sætte den til at pege på din string):
Bemærk den lille krølle omkring format-specifier til printf ('%.*s') - punktum + stjernen betyder at der maksimalt udskrives det antal bytes fra strengen som angives i parameteren *FØR* selve strengen, altså sizeof(). Herved får du kun skrevet den del af strengen ud, som rent faktisk indeholder henholdvis nr og tekst. (Det er i øvrigt god, defensiv kodeteknik der medvirker til at undgå memory-overskrivninger.)
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.