Warum nicht scanf muss ein kaufmännisches und-Zeichen für strings und funktioniert auch einwandfrei in printf (in C)?
Lerne ich über strings in C jetzt.
Wie kommen Sie zu verwenden scanf um eine Zeichenfolge, die Sie tun können,
scanf("%s",str1);
und für printf, die Sie tun können
printf("The string is %s\n", str1);
Ich verstehe, dass für scanf ist es, weil der string nur ein Zeichen-array ist ein pointer, aber für printf, wie Sie ist, dass können Sie nur die Variablen Namen wie würden Sie für ein int oder float?
Du musst angemeldet sein, um einen Kommentar abzugeben.
scanf
muss die Adresse der variable zu Lesen, und string-Puffer sind bereits vertreten sind als Adressen (Zeiger auf einen Speicherort im Speicher, oder ein array, das zerfällt in einen pointer).printf
macht das gleiche, die Behandlung von%s
als ein Zeiger-auf-string.In C, Variablen, arrays sind, werden ein Zeiger auf das erste element des Arrays als Funktionsargumente-so Ihre scanf() sieht einen Zeiger auf den Speicher (vorausgesetzt, "str1" ist ein array).
In deiner printf(), "str1" könnte entweder ein Zeiger auf eine Zeichenfolge oder ein Zeichen-array (in dem Fall das argument, gesehen von printf() wäre ein Zeiger auf das erste element des Arrays).