Längerer String mit bestimmter Länge
-
HI, ich hab ein kleines Problem.
char umg1[5000]; fprintf(stderr,"+------------------------------------------+\n"); fprintf(stderr,"| %-40s |\n","Variable z.B. so eingeben: TERM"); fprintf(stderr,"+------------------------------------------+\n"); printf(" "); scanf("%s", umg1); fprintf(stderr,"+------------------------------------------+\n"); fprintf(stderr,"| %-40s |\n","Wert z.B. so eingeben: aterm"); fprintf(stderr,"+------------------------------------------+\n"); printf(" "); scanf("%s", umg11); setenv(umg1,umg11,1); fprintf(stderr,"+------------------------------------------+\n"); //fprintf(stderr,"| %s:%-40s |\n",umg1,getenv(umg1)); fprintf(stderr,"| %s :", umg1); fprintf(stderr," %s |\n", getenv(umg1)); fprintf(stderr,"+------------------------------------------+\n");
Und jetzt bei getenv() bekomme ich dieses | nicht dahin wo es soll, weil der String nicht immer gleich ist.
Weisst jemand wie ich das ändern kann?
Es soll die Länge haben wie die anderen oberen.Vielen Dank
-
benutz doch %-40s wie du es ueberall benutzt.
-
das hab ich doch, ich hab schon alles prbiert
-
"%*.s", 40-strlen(umgl), getenv(...),...
-
irgendwie kriege ich das nicht gebacken:
fprintf(stderr,"| %*.s |\n", 40-strlen(umg1), getenv(umg1));
Kannst bissi genauer sagen?
-
sorry, mein fehler. der punkt nach dem * war falsch. so muss es sein:
fprintf(stderr,"| %*s |\n", 40-strlen(umg1), getenv(umg1));
-
hmm, das ist nicht gut, Ausserdem will ich 2 Variablen ausgeben und nicht eins.
Dazwischen soll ein : sein.
-
fprintf(stderr,"| %s: %*s |\n", umgl, 40-strlen(umg1), getenv(umg1));
darauf haettest du aber nun wirklich selber kommen koennen.
-
auf sowas hätte ich wirklich nicht kommen können, da ja jetzt drei "Variablen" sind und nicht zwei.
Und es funktioniert auch nicht.
Ich glaube das mit dem strlen ist an der falschen Seite. Denn das getenv ist dass was begrenzt werden soll.
-
char foo[] = "hello"; char bar[] = "world"; printf("%s: %*s", foo, 40-strlen(foo), bar);
*getestet*
-
hm, mach mal das:
f
printf(stderr,"| %s: %*s |\n", umg1, 40-strlen(umg1), getenv(umg1));
-
vorgekaut:
fprintf(stderr, "| %s: %*s |\n", umg1, max(0, 40-strlen(umg1)), getenv(umg1));
-
maximo: Und du willst später mal ein Hacker werden? Keine Chance...
-
ich haette dann noch das anzubieten, selbstverstaendlich schon zerkleinert und mit enzymen durchtraenkt:
char foo[] = "hello"; char bar[] = "world"; fprintf(stderr, "%-40s: %s", foo, bar);
-
hm, das hatte ich schon ausprobiert. Das mit dem max ist wieder so ne sachen.
Das ist doch eine Funktion. Und egal wie ich es mache, es passt einfach nicht.
Bei dir schon? Ich glabe ich muss mich mehr mit der Formatierung bzw. Umwandlungsvorgaben auseinander setzen.Und es soll zum Programm passen.