Ja aber das wichtige ist die Größe des Speicherblocks, bisher sieht das für mich so aus das du davon ausgehst der ist beliebig groß. Tatsächlich wird der aber nur so groß wie der String den du zuweißt.
Das heißt hier
char teil1[] = "sudo nvclock -F ";
wären das 17 Bytes und hier
char teil2[] = " -f";
4 Bytes.
Was aber nicht funktioniert ist sowas:
char t[];
strcpy(t,"hallo");
[/PHP]
Ich weiß jetzt nicht ob das einen Compilerfehler verursacht, aber im Besten Fall hat t so Platz für 0 Zeichen.
Das heißt du hast 2 Möglichkeiten:
1. Du reservierst soviel Platz für deine Arrays wovon du ausgehst das es für den Programmbedarf ausreicht und begrenzt die Benutzereingaben so das nie ein Pufferüberlauf stattfinden kann.
2. Du arbeitest mit dynamisch reserviertem Speicher, was das Ganze aber sehr viel komplizierter macht und ich würde die erstmal zu Punkt 1 raten.
Begrenzen kannst du die Benutzer eingabe per scanf so
[PHP]
scanf("%20s", t);
Das heißt in folgendem Beispiel wärst du erstmal auf der sicheren Seite:
char t[100];
char teil1 [] = "Hallo ";
char teil2 [50];
scanf ("%49s", teil2);
strcpy (t,teil1);
strcat(t,teil2);
[/PHP]
Vorrausgesetzt natürlich du initialisierst teil1 nicht mit einem String länger als 50 Zeichen