char pointer array
-
hallo ich erstelle ein "char *str[4];"
und malloc'e folgendermaßen:
sprintf(test,"hallo %s ",stringvariable"); str[0] = (char *) malloc((strlen(test)+1)*sizeof(char));
und das gleiche nur mit anderen texten bei str[1],str[2],str[3]....
mir stürzt das programm aber immer mit segmentation fault ab!
kann mir jeamnd sagn warum?
-
wie ist denn 'test' defniert? Hoffentlich als ausreichend großes char-Array für die Daten.
(btw, sizeof(char) ist per Definition 1 ;))
-
hallo, ja test ist mit "test[401];" ausreichend definiert!!
wo könnte der fehler liegen?
-
Wie kommen eigentlich die Daten von 'test' nach 'str[0]' etc? (zeig doch mal etwas mehr Code)
-
Ja, und wie ist z.B. str deklariert ?
Du versteckst deine Fehler vor uns
-
wie ist z.B. str deklariert ?
char *str[4];
...
-
str ist deklariert wie (D)evil schon geschrieben hat...
test nach str
sprintf(str[0],test);
ich weiß nicht was ich euch noch zeigen kann von meinem code! das ist eig. alles!
-
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.