%s
-
mcr schrieb:
Du hast im folgenden Fall Recht:
#define FORMAT "%s\n" printf( FORMAT, "%s");
was das gleiche ist wie:
printf("%s\n", "%s");
Im obigen Beispiel ist der erste String der Formatstring, bei dem das
"%s" durch den zweiten String ersetzt wird.Gruß mcr
falsch. es müsste schon
Du hast im folgenden Fall Recht:
#define FORMAT "%s\n" printf( FORMAT, "%%s");
was das gleiche ist wie:
printf("%s\n", "%%s");
heißen, wenn du den gewünschten effekt haben willst :p
-
Machine schrieb:
falsch. es müsste schon
Du hast im folgenden Fall Recht:
#define FORMAT "%s\n" printf( FORMAT, "%%s");
was das gleiche ist wie:
printf("%s\n", "%%s");
heißen, wenn du den gewünschten effekt haben willst :p
Sorry, dass ich dich enttäuschen muss. Aber du hast Unrecht:
#include <stdio.h> #define FORMAT "%s\n" int main(void) { printf( FORMAT, "%s" ); printf( FORMAT, "%%s" ); return 0; }
liefert:
%s %%s
Wie du siehst: ich habe Recht.
Gruß mcr
-
mcr schrieb:
aber das stimmt hier nicht. Der String, in dem das '%s' steht, ist ein
Formatstring.Falls die Ironie nicht rübergekommen sein sollte:
In C# gibt es keine Formatstrings mit % als Platzhalter.
-
Machine schrieb:
falsch. es müsste schon
Du hast im folgenden Fall Recht:
#define FORMAT "%s\n" printf( FORMAT, "%%s");
was das gleiche ist wie:
printf("%s\n", "%%s");
heißen, wenn du den gewünschten effekt haben willst :p
Du bist im Unrecht. Das Steuerzeichen % ist nur im Formatsring der printf/scanf Familie von Bedeutung. Alle andere Zeichen außerhalb des Formatstrings werden 1:1 ausgegeben.
-
Hmm, wieso ergießt ihr Euch derart erschöpfend über Format-Strings? Welche Strings was bedeuten und wie das alles funktioniert kann man bis ins Detail im Netz nachlesen. Weniger als 10s Aufwand bei der Google-Suche.
-
Tachyon schrieb:
Hmm, wieso ergießt ihr Euch derart erschöpfend über Format-Strings? Welche Strings was bedeuten und wie das alles funktioniert kann man bis ins Detail im Netz nachlesen. Weniger als 10s Aufwand bei der Google-Suche.
hier ging es schon lange nicht mehr um format strings. hier ging es schlichtweg einfach darum, _wer_ recht hat
-
ui, sorry.. ich hab da grad das % mit dem & verwechselt
-
Machine schrieb:
ui, sorry.. ich hab da grad das % mit dem & verwechselt
% mit & verwehselt? Wo denn? da find ich keinen Zusammenhang
-
supertux schrieb:
Machine schrieb:
ui, sorry.. ich hab da grad das % mit dem & verwechselt
% mit & verwehselt? Wo denn? da find ich keinen Zusammenhang
wenn du in einem string ein & zeichen haben willst, dann musst du zwei & schreiben.
Bsp:
CString foo = _T("Video && Fotoshow"); SetDlgItemText(IDC_ST_FOO, foo);
Da steht dann auf dem Control Video & Fotoshow.
-
Machine schrieb:
supertux schrieb:
Machine schrieb:
ui, sorry.. ich hab da grad das % mit dem & verwechselt
% mit & verwehselt? Wo denn? da find ich keinen Zusammenhang
wenn du in einem string ein & zeichen haben willst, dann musst du zwei & schreiben.
Bsp:
CString foo = _T("Video && Fotoshow"); SetDlgItemText(IDC_ST_FOO, foo);
Da steht dann auf dem Control Video & Fotoshow.
Ja? Also bei mir steht da konkret "Video && Fotoshow".
Hier der Code:#include <stdio.h> #include <stdlib.h> #include <string.h> #define IDC_ST_FOO 0 #define _T(x) x typedef char* CString; typedef unsigned int hokus_pokus_t; void SetDlgItemText(hokus_pokus_t drolf, CString rolf) { (drolf % 2)?printf("%s\n", rolf):printf("%s\n", rolf); } int main() { CString foo = _T("Video && Fotoshow"); SetDlgItemText(IDC_ST_FOO, foo); return 0; }
-
Machine schrieb:
CString foo = _T("Video && Fotoshow"); SetDlgItemText(IDC_ST_FOO, foo);
Da steht dann auf dem Control Video & Fotoshow.
??? und was hat das mit C zu tun? Siehe Tachyons ironische Antwort.
edit: bei GUI Frameworks ist es üblich, dass das Ampersand doppelt vorkommt, wenn man das Zeichen ausgeben will, weil man mit "&Menu" in Menüs/Knöfpe/Formulare/usw das & dazu benutzen kann, um den Buchstaben 'M' zu untertsreichen, damit es so aussieht:
Menu
Das hat aber mit C nichts zu tun (wie ich oben geschrieben hab) sondern das ist eine Eigenheit von GUI Frameworks (eher von dieses _T Makros).
-
supertux schrieb:
??? und was hat das mit C zu tun?
SetDlgItemText ist durchaus eine C-funktion
machste noch:#define char* CString #define _T
... und dann sollte es compilen.
-
fricky schrieb:
supertux schrieb:
??? und was hat das mit C zu tun?
SetDlgItemText ist durchaus eine C-funktion
machste noch:#define char* CString #define _T
... und dann sollte es compilen.
es hat insofern mit C nichts zu tun, weil wenn du das &-Zeichen in einer Zeichenkette ausgeben willst, muss das &-Zeichen nicht doppelt vorkommen. Dass GUI Frameworks etwas anders machen, damit Textbuchstaben unterstrichen erscheinen, ist eine andere Sache und hat nicht viel mit C zu tun.
-
Wer hat den jetzt recht ? -.-
-
ich natürlich
-
ich habe nie was davon gesagt, dass es mit C zu tun hat. ich habe gesagt, ich habe nicht an % sondern & gedacht. dann hat jemand gefragt wie ich das meine, dann hab ichs erklärt. lest erstmal alle beiträge bevor ihr hier rumtrollt. also echt ey.
-
Dein Beitrag kam aber so rüber, als wäre dieses Verhalten *immer* der Fall.
wenn du in einem string ein & zeichen haben willst, dann musst du zwei & schreiben.
*darauf haben wir "rumgetrollt"
-
Machine schrieb:
ich habe nie was davon gesagt, dass es mit C zu tun hat. ich habe gesagt, ich habe nicht an % sondern & gedacht. dann hat jemand gefragt wie ich das meine, dann hab ichs erklärt. lest erstmal alle beiträge bevor ihr hier rumtrollt. also echt ey.