Avatar billede heyn Nybegynder
15. april 2013 - 11:28 Der er 5 kommentarer og
1 løsning

Hvorfor ødelægger strcat det hele?

Hej Eksperter

Jeg har en funktion hvor der skal anvendes strcat().

Den ser således ud

int printReceipt(const char* cText)
{
    const char *cPtr = cText;

receipt_status);

    while((*cPtr != '\0')) {
        rc = RECEIPT_OK;
        strcat(reciepttext, cPtr);
        printf("%c", *cPtr);
        cPtr++;
    }
    fflush(NULL);
    return rc;
}

Når jeg udkommanderer linien med strcat går alt godt.
Men når jeg indfører linien med strcat går det helt galt. Godt nok kompiles programmet uden fejl eller warning. Men når jeg kører det kommer der en helt masse sludder på skærmen efter at der er blevet udskrevet.

Kender nogle en løsning på det problem?

Med venlig hilsen Christian
Avatar billede heyn Nybegynder
15. april 2013 - 12:23 #1
Og tilføjer jeg i stedet

const char *temp = cText;
strcat(reciepttext, temp);
temp++;

på de rette steder

Ja så sker det samme. Udelader jeg temp++ standser udskriften til terminalen midt i processen og skriver
'Segmentation fault'
Avatar billede arne_v Ekspert
15. april 2013 - 14:15 #2
Hvordan er reciepttext erklaeret og initaliseret?
Avatar billede arne_v Ekspert
15. april 2013 - 14:16 #3
C er et rimeligt low level sprog, saa du skal ikke forvente at faa en compiler fejl, fordi du laver noget som vil faa programmet til at crashe - C compileren antager at du ved hvad du laver.
Avatar billede heyn Nybegynder
15. april 2013 - 15:27 #4
Jeg ved ikke rigtig hvorfor, men da jeg skiftede til strcpy fungerede det.
reciepttext er en chararr. Så vidt jeg kan se kræver fputs nemlig denne type. Hvis jeg da ikke igen er forkert på den. Det er godt nok længe siden jeg har rodet med pointere.

Smid et svar.

Med venlig hilsen Christian
Avatar billede arne_v Ekspert
15. april 2013 - 15:48 #5
Forskellen paa strcat og strcpy er at strcat forventer at der er noget i forvejen (en streng med laengde 0 er ogsaa noget i den sammenhaeng).
Avatar billede arne_v Ekspert
15. april 2013 - 15:49 #6
svar
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester