Strings auch ohne \0 ?
-
Können in C auch nicht Nullterminierte Strings initialisiert werden, oder geht das nur über den Assembler Umweg?
Ich möchte Daten in ein statisches Chararray ablegen, wofür ich den Nullterminus nicht brauche.char blabla[] = "test1234" erzeugt ja bekanntermaßen die ASCII Folge
test1234\0 und nicht test1234.Viele Grüße
-
Du kannst es über einzelne Zeichen machen oder die Länge vorgeben.
char txt1[] = {'A','b','C'}; char txt2[3] = "Abc";
Dann solltest du aber einen Kommentar dazu machen, dass das Absicht ist.
-
Ist ja interessant:
char string[] = "blabla"; ist nullterminiert,
aber
char string[6] = "blabla"; nicht???
Ist das nicht eigentlich etwas inkonsequent, wenn man so recht darüber nachdenkt?
Wie wäre es mit
#define STRING "blabla"
char string[sizeof(STRING)-1] = STRING;
?
-
Das Stringliteral ist Nullterminiert.
Die leeren Klammern überlassen dem Compiler die richtige Länge.
Wenn du nur 6 Zeichen ablegen willst und kein Platz für die '\0' ist, ist kein Platz für die '\0'.
Was ist daran inkonsequent? Denk nochmal darüber nach.
Wie wäre es als Einzeiler
#define STRING_OHNE_NULL(name,wert) char name [sizeof(wert)-1] = wert int main(){ STRING_OHNE_NULL(text1,"Hallo"); STRING_OHNE_NULL(text2,"Welt!"); printf("Hallo %*s %u\n", sizeof(text2), text2, sizeof(text2) ); return 0; }