char pointer array



  • Es würde ja schon reichen, wenn wir alles am Stück sehen könnten anstelle dieser unzusammenhängenden Code-Fetzen.



  • ok hier!

    char test[401];
    char *str[4];
    
    sprintf(test,"hallo %s ",stringvariable);
    str[0] = (char *) malloc((strlen(test)+1)*sizeof(char));
    sprintf(str[0],test);
    
    sprintf(test,"hallo %s ",stringvariable);
    str[1] = (char *) malloc((strlen(test)+1)*sizeof(char));
    sprintf(str[1],test);
    
    sprintf(test,"hallo %s ",stringvariable);
    str[2] = (char *) malloc((strlen(test)+1)*sizeof(char));
    sprintf(str[2],test);
    
    sprintf(test,"hallo %s ",stringvariable);
    str[3] = (char *) malloc((strlen(test)+1)*sizeof(char));
    sprintf(str[3],test);
    


  • Lass erstmal die ganzen unnötigen Teile weg, damit wird das Programm wesentlich übersichtlicher (sizeof(char) ist IMMER 1, und malloc() sollte man nicht casten):

    str[0] = malloc(strlen(test)+1);
    

    (btw, was steht eigentlich in stringvariable?)



  • 1. Was ist in stringvariable?
    2. Kopiere den String test besser per strcpy (sollte aber so auch funktionieren).
    3. Malloc nicht casten!
    4. sizeof(char) ist immer 1!



  • stringvariable ist genaugesehen auch ein char pointer! dort steht ein name z.b. "kale", d.h. in test steht am ende "hallo kale"



  • hallo,

    jetz funktionier es....und zwar ging es nach der änderung von

    sprintf(str[0],test);
    

    auf

    strcpy(str[0],test);
    

    wie LordJaxom mir geraten hat....also danke LordJaxom aber auch danke an alle anderen die mir geantwortet und mir beim lösen des problems und beim dazulernen geholfen haben! DANKE

    EDIT: noch ne frage! an was liegt es das es mit strcpy geht und mit sprintf nicht?
    ^
    nochmal EDIT: kurz nachgedacht-liegt es daran das sprintf immer ein \0 anfügen will und dort aber schon eins ist und der string deshalb zu lang wird?



  • Hast du mal nachgesehen, ob irgendwelche %-Zeichen in dem Namen drin stehen? Mit denen könnte sprintf() Probleme bekommen (es interpretiert sie als Formatkennungen und versucht, die nicht vorhandenen weiteren Argumente auszuwerten).



  • das könnte auch sein...danke für diesen tipp!! so lernt man tag für tag dazu! danke



  • CStoll schrieb:

    ...und malloc() sollte man nicht casten)

    Kann mir einer sagen, warum nicht?



  • http://c-faq.com/malloc/mallocnocast.html

    Desweiteren ist es in C schlicht unnötig und unschön.


Anmelden zum Antworten