Angenommen, ich habe vergessen, die rechte eckige Klammer ]
eines Scansets zu schließen. Was wird dann passieren? Ruft es nicht definiertes Verhalten auf?Was passiert, wenn ich vergesse, einen Scanset zu schließen?
Beispiel:
char str[] = "Hello! One Two Three";
char s1[50] = {0}, s2[50] = {0};
sscanf(str, "%s %[^h", s1, s2); /* UB? */
printf("s1='%s' s2='%s'\n", s1, s2);
ich eine Warnung von GCC erhalten beim Kompilieren:
source_file.c: In function ‘main’:
source_file.c:11:5: warning: no closing ‘]’ for ‘%[’ format [-Wformat=]
sscanf(str, "%s %[^h", s1, s2); /* UB? */
und der Ausgang als
s1='Hello!' s2=''
ich auch, dass die sscanf
Rückkehr bemerkt habe 1 Aber was genau geht hier vor?
Ich habe den C11-Standard überprüft, aber keine Informationen dazu gefunden.
Danke! Ich schlage vor, dass Sie einen Fehlerbericht einreichen, da ich nicht weiß, wo ich hingehen soll und wie ich es machen soll. –
Ich habe eine E-Mail an Daniel Plakosh, den Sekretär der C-Arbeitsgruppe, geschickt. Ich werde Sie auf dem Laufenden halten. – chqrlie