Avatar billede nutten Nybegynder
10. maj 2004 - 21:55 Der er 8 kommentarer og
1 løsning

Char-array som argument til funktion?

Ja, det er sgu lidt besynderligt, men jeg initialiserer et array med 12 tegn i.

Efterfølgende kalder jeg en funktion med dette array som argument og skriver ( til test ) hvert tegn ud. Men hvorfor er det lige mit array kun er 4 tegn langt i den kaldte
funktion? Det kan vel ikke være mellemrum eller er det en bestemt kode?

Jeg har også været ude for at det samme array f.eks med 3 tegn - har længden 4 når funktionen er blevet kaldt?

Det virker skummelt :(
Avatar billede arne_v Ekspert
10. maj 2004 - 21:57 #1
Lad mig gætte: du bruger sizeof til at finde størrelsen med !
Avatar billede arne_v Ekspert
10. maj 2004 - 21:58 #2
char buf[12];

sizeof(buf) giver 12 fordi der er 12 tegn i arrayet

void f(char *s)

sizeof(s) giver 4 fordi pointeren fylder 4 tegn
Avatar billede nutten Nybegynder
10. maj 2004 - 21:58 #3
Det er da egentligt meget godt gættet :o)

Og så 100 kroners spørgsmålet - hvad er alternativet?
Avatar billede nutten Nybegynder
10. maj 2004 - 21:58 #4
Ahhh okaj. Hvad gør jeg så?
Avatar billede arne_v Ekspert
10. maj 2004 - 22:00 #5
Du kan sende længden med over som et andet argument.

void f(char *s, int len)

eller hvis det er et nul termineret char array kan du bruge strlen(s)
til at finde ikke størrelsen men antal tegn inden nul byten.
Avatar billede nutten Nybegynder
10. maj 2004 - 22:11 #6
Fantastisk!
Så har jeg lige et tillægsspørgsmål:
Hvis jeg manipulerer mit array som jeg vil - vil det stadig være nultermineret?
Avatar billede arne_v Ekspert
10. maj 2004 - 22:13 #7
Afhænger lidt af hvad du gør.

Du kan ændre nogle af tegnene inden nul byten.

Du kan trunkere ved at sætte et at tegnene inde nul byten til nul.

Du kan appende med strcat (husk at der skal være plads i det oprindelige array !).
Avatar billede arne_v Ekspert
10. maj 2004 - 22:14 #8
og et svar
Avatar billede nutten Nybegynder
10. maj 2004 - 22:22 #9
Jeg skal bare lave hvert tegn om - lægge et tal til, så det bliver et nyt tegn.

Og tak for hjælpen :o)
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