Betrachten Sie folgenden Code:getchar() in einer for-Schleife Bedingung
int main()
{
char c;
for(;(c=getchar())+1;)
printf("%c\n",c);
}
Es wird Zeichen, was ich in Terminal eingeben und druckt sie. Wenn ich +1
in Bedingung entferne, funktioniert Programm, aber es hört nicht auf, wenn EOF
(Ctrl + D) signal. Wenn ich es zu +2
gleichen Problem ändern.
Meine Frage ist, wie funktioniert das +1
? Ist es etwas mit getchar()
oder for
Schleife verbunden?
Weil'EOF' typischerweise als '-1' und' -1 + 1 = 0' definiert ist. Kurz gesagt, tu das nicht. Was Sie tun sollten, ist while ((c = getchar())! = EOF) ' – user3386109
Und' char c; '->' int c; 'weil' getchar() '' int' zurückgibt. –
Um zu betonen, was @ user3386109 und @WeatherVane schrieb: Sie müssen beide Maßnahmen verwenden! EOF ** typisch ** ist "-1", es ist nicht garantiert! Allgemeiner Hinweis: Lesen Sie die Dokumentation der von Ihnen verwendeten Funktionen und Makros usw.! Alles kann in jedem C-Buch gefunden werden. Zusammen mit dem, was ein Zusatz in C bedeutet (die mathematischen Grundlagen sollten in der Schule gelernt werden). – Olaf