Spójrzmy na kod:
#include <stdio.h>
tej pory tak dobrze ...
main()
{
- Funkcja
main()
zawsze zwraca int
. Zawsze.
- Deklarowanie funkcji bez powrotu typ jest złą formą, ponieważ domyślnie jest to
int
, ale ludzie nie pamiętają o tym, że jest to łatwe podczas czytania kodu.
Przechodząc ...
long nc;
nc = 0;
dobrej formie. Zmienna jest inicjowana przed jej użyciem.
while (getchar() != EOF)
++nc;
To trochę skomplikowane. Ale jeden krok na raz.
- Funkcja
getchar
zwraca int
ze standardowego wejścia.
- Ta wartość jest następnie porównywana z
EOF
.
- Jeżeli wartość
int
ze standardowego wejścia nie EOF
zmienna nc
jest zwiększany.
Aby wyjść z pętli while
, należy wygenerować EOF ze standardowego wejścia.
Uwaga: Żadna z wartości odczytanych ze standardowego wejścia zapisane są . Każda wartość jest odrzucana po oszacowaniu wyrażenia.
Styl: Proponuję użyć '{' i '}' po każdym oświadczeniu while
. Jest to przyzwyczajenie, do którego należy się przyłączyć.
printf("%ld\n", nc);
Powyższa instrukcja drukuje (wyświetla) wartość w nc
. Wartość w nc
reprezentuje liczbę znaków odczytanych ze standardowego wejścia. To oświadczenie powoduje, że nie wyświetla żadnych znaków ze standardowego wejścia.
}
Wreszcie, program main
musi zwrócić wartość do systemu operacyjnego. Dwie przenośne wartości to EXIT_SUCCESS
i EXIT_FAILURE
, które są zdefiniowane w stdlib.h
. Określenie jednej z tych wartości byłoby również dobrym nawykiem.
BTW, w podanym przykładzie nie ma numeru putchar
(który skopiowałem do tej odpowiedzi).
Umm ... w tym kodzie nie ma putchar(). – SoapBox
O czym mówi się "putchar()"? – mob
Myślę, że napisałeś zły program z K & R! –