nej... jeg har et array[x]={'x','x','x'} er der mulighed for at få det lagt over i en "streng", der er jo ikke strenge i C, men kun "char arrays" .. normalt opgivet som en *pointer til den første char...
Skriver det lige korrekt ;) char a[3] = {'h','e','j'} skal laves til char a[] = "hej";
Men du bliver nødt til at gøre således, hvis du vil gøre det nemt: char a[4] = {'h', 'e', 'j', 0};
Så kan du bare typecaste, hvis du vil bruge den som en streng: (char *)a
Hvis du giver a[3] (altså uden 0-byte), skal du jo lige have tilføjet dette. Men da du ikke kan ændre størrelsen af et array allokeret på stakken, bliver du nødt til at lave det dynamisk:
Grunden til, at du skal opgive længden, er, at man ikke kan finde størrelsen af dynamiske array's, kun array's på stakken (statiske). Hvis du vil have et statisk array til tekst, kan du godt benytte sizeof(): char a[3] = {'h','e','j'} char *b = atos(a, sizeof(a));
Ellers skal du selv holde styr på det: char *a = malloc(3); a[0] = 'h'; a[1] = 'e'; a[2] = 'j';
char *b = atos(a, 3);
Egentlig har du jo en tekststreng, hvis du har et array af char's, der skal bare tilføjes en 0-byte, hvis ikke den allerede findes i array'et, således at man kan finde slutningen på tekststrengen.
Løsningen var lige præcis at skrive char a[3] = {'h','e','j','\0'} altså med NULL på sidste plads, det giver mig mulighed for at benytte alle funktioner i string.h.
Så smider jeg lige nogle point og en tak til mxs for gåpåmod :)
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.