Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zeigerprobleme (glaub' ich wenigstens)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
21.10.2003, 15:16 Uhr
HRI-Dummy



Hallo Leute!

Also ich habe folgendes Problem. Ich moechte mir einen stringpointer zusammenbasteln in den ich einige Variablen einfuegen will. Leider funktioniert das irgendwie nicht.


Code:
char *query1 = ANY_TNALLOC(256,char);
char *query2 = ANY_TNALLOC(256,char);
char *query3 = ANY_TNALLOC(256,char);

*query1 = "insert into all_images (image_width,image_height,URL) values\
               (" && width && "," && height && "," && DB.Path && ")";

query2 = "select max(image_id) from all_images limit 1";

*query3 = "insert into identification (image_id,object_index,view_index,name)\
               values (" && query2 && "," && objectIndex && "," && viewIndex\
               && "," && DB.Name_Code && ")";

ANY_FREE(query1);
ANY_FREE(query2);
ANY_FREE(query3);



Das Problem ist, das query1 und query3 nach der Zuweisung leer sind, in query2 steht genau das was ich auch zugewiesen habe.
Erstens verstehe ich nicht so richtig, warum ich query2 bei der Zuweisung keinen * voranstellen muss.
Zweitens verstehe ich nicht, warum die anderen beiden querys leer sind. An den Variablen kann es nicht liegen, die sind zum Zeitpunkt der Zuweisung schon gefuellt, das habe ich auch ueberprueft.
Das dritte Problem ist, das ich nachdem ich mit ANY_FREE() den Speicherplatz wieder freigebe einen 'segmentation fault (core dumped)' bekomme.

Ich werde jetzt versuchen, mir die queries irgendwie mit strcat() zusammenzubasteln, auch wenn das umstaendlich wird, aber ich wuerde doch gerne verstehen was ich falsch mache.
Ich weiss, dass ist mal wieder eine absolute Anfaengerfrage, aber ich bedanke mich jetzt schon bei jedem, der die Geduld hat, mir weiterzuhelfen!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.10.2003, 15:29 Uhr
virtual
Sexiest Bit alive
(Operator)


Probier mal

C++:
strcpy(query1, "insert...");


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.10.2003, 15:43 Uhr
HRI-Dummy



War 'ne gute Idee, aber das will der Compiler nicht, von wegen

'argument 2 of strcpy makes pointer from integer without a cast'.

Wenn ich ihm dann query1 wieder als *query1 uebergebe

'strcpy(*query1,"insert...);'

dann meckert er dasselbe rum nur diesmal ueber Argument 1.
Ich versteh das nicht!

Hilfeeeeeeeeeeeeee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.10.2003, 16:04 Uhr
HRI-Dummy



strcat() funktioniert uebrigens auch nicht, jetzt bin ich wirklich ratlos...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.10.2003, 16:09 Uhr
Pablo
Supertux
(Operator)


Ich habe auch Probleme mit strcat.


C++:
char was[200];
*p='\0';
strcat(p, "Hallo");



So funktioniert immer bei mir.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.10.2003, 16:12 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat:
HRI-Dummy postete
War 'ne gute Idee, aber das will der Compiler nicht, von wegen

'argument 2 of strcpy makes pointer from integer without a cast'.




Das liegt aber an dem "String", der keiner ist:

C++:
"insert into all_images (image_width,image_height,URL) values\
               ("
&& width && "," && height && "," && DB.Path && ")";


Das ist tatsächlich ein int, mit dem Wert 1, wenn width und height!=0 sind
Willst Du vielleicht:

C++:
sprintf(query, "insert into all_images (image_width,image_height,URL) values  (%d,%d,\'%s\')", width, height, DB.Path);


?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 21.10.2003 um 16:14 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.10.2003, 16:33 Uhr
HRI-Dummy



Ja, genau das will ich, aber geht das so auch mit strcpy???

strcpy(query1,"insert... values (%d,%d,\'%s\')

Wofuer ist den sprintf()?
Wohin schreibt die Funktion?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.10.2003, 16:40 Uhr
Anfänger00



Man kann sich aber auch selber ne Funktion schreiben.
Die muss a) Die Größe der Strings rausfinden und b) arrayweise kopieren.
Das sähe dann so aus:

C++:
int mystrlen(char* Zkette)
{
int x=0;
while(Zkette != '\0') {x++;}
return x;
}

void copy(char* Nach,char* Von)
{
for(int i=0;i<mystrlen(Von);i++)
{
Nach[i] = Von[i];
}
}

int main()
{
char Eingabe[256];
char Kopie[256];
...
copy(Kopie,Eingabe);
}



Wo ich mir nicht ganz sicher bin ,ob Kopie jetzt auch wircklich verändert wird,
oder ob nur eine interne Kopie gemacht wird,mit der dann gerechnet wird.

Dieser Post wurde am 21.10.2003 um 17:34 Uhr von Anfänger00 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.10.2003, 16:51 Uhr
HRI-Dummy



Es funktioniert endlich!
Manchmal bin ich sowas von daemlich das ich mich echt frage wie ich eigentlich ausgerechnet zum Programmieren gekommen bin!

Danke fuer die Hilfe!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.10.2003, 22:57 Uhr
0xdeadbeef
Gott
(Operator)


Geh mal an eine Uni und kuck nach, wer alles Informatik studiert. Deine Probleme sind noch ziemlich human - Pointer sind halt ziemlich abstrakt. Ich hab Leute gesehen, die sowas in Java nicht hinbekommen haben, und da ist es wirklich nur "String" + eine_zahl + " noch ein String" + noch_eine_zahl. Auch wenn das eine der Sachen ist, die ich an Java nicht mag - ohne Operatorüberladung ist das einfach inkonsistent - einfach ist es. Auf der anderen Seite ist das Ellipsen-Gebastel in C auch nicht viel besser. Da lob ich mir das C++-Stream-Konzept...
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: