Strings in C / Zuweisungsproblem
-
Hallo zusammen,
warum kann der Compiler die Strings nicht einfach in die char-Matrix einspielen?
Wo liegt mein Denkfehler?#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char SQLsignalFullSet[2][64]; SQLsignalFullSet[0] = "`SIGNAL_00`"; SQLsignalFullSet[1] = "`SIGNAL_01`"; printf("%s",SQLsignalFullSet[1]); return EXIT_SUCCESS; }
Danke. Grüße, Kevin
-
C hat keinen Datentyp für Strings. Strings sind somit char arrays. Arrays kann man erstmal nicht einfach mit = zuweisen. Möglich wäre:
1: EDIT: const
const char *bla[2]; bla[0] = "lol"; bla[1] = "sdf";
2:
char SQLsignalFullSet[2][64]; strcpy(SQLsignalFullSet[0], "`SIGNAL_00`"); strcpy(SQLsignalFullSet[1], "`SIGNAL_01`");
Und nächste mal am besten gleich schreiben was für ein Fehler denn auftaucht. (Compiler Fehlermeldung zB.)
-
Hallo,
ich hab´s mit sprintf gelöst. Hab ich da Performanceeinbußen ggü. strcpy?
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char SQLsignalFullSet[2][64]; sprintf(SQLsignalFullSet[0],"`SIGNAL_00`"); sprintf(SQLsignalFullSet[1],"`SIGNAL_01`"); printf("%s",SQLsignalFullSet[1]); return EXIT_SUCCESS; }
-
lovepulse schrieb:
ich hab´s mit sprintf gelöst. Hab ich da Performanceeinbußen ggü. strcpy?
Ist dein Programm denn zu langsam, so dass du dir Gedanken über Optimierungen machen musst?
-
Für konstante Werte wäre folgendes einfacher und auch performanter:
int main() { const char *SQLsignalFullSet[] = {"`SIGNAL_00`","`SIGNAL_01`"}; printf("%s",SQLsignalFullSet[1]); return EXIT_SUCCESS; }
-
cooky451 schrieb:
1:
char *bla[2]; bla[0] = "lol"; bla[1] = "sdf";
Hui, da sollte aber const char * stehen.
lovepulse schrieb:
Hallo,
ich hab´s mit sprintf gelöst. Hab ich da Performanceeinbußen ggü. strcpy?
}[/cpp]Wahrscheinlich hast du schon leichte Performanceeinbußen. Warum nimmst du nicht einfach strcpy()?
-
sprintf muss beim kopieren noch auf die Formatangaben (%s ...) achten.
Deshalb bekommst du Probleme wenn in deinem String ein '%' auftaucht. Das versucht dann sprintf zu interpretieren.
-
wxSkip schrieb:
Hui, da sollte aber const char * stehen.
Huch, wie konnte das denn passieren. Verdammt, wie war das mit dem Katzen-tötenden Programmiergott?
-
cooky451 schrieb:
wxSkip schrieb:
Hui, da sollte aber const char * stehen.
Huch, wie konnte das denn passieren. Verdammt, wie war das mit dem Katzen-tötenden Programmiergott?
Den Witz kenne ich noch nicht, den musst du mir noch erzählen...