Program wyświetlający, użyte znaki w zdaniu napisanym z klawiatury

0

Napisałem sobie takiego programa, i pytanie jest takie, czy on działa dobrze, i czy na każdym pc będzie działał dobrze

#include <stdio.h>
#include <stdlib.h>

void sign_amount()
{
 int tab[128];
 int i, c;
 for(i = 0; i < 128; ++i)
    tab[i] = 0;
    while( (c =getchar()) != '\n')
    tab[c] += 1;
 for( i = 0; i < 128; ++i)
        printf("%c=%d\n", i, tab[i]);
}

int main()
{
    sign_amount();

    return 0;
}

1

Afaik na każdym PC będzie działał dobrze. Ale mógłbyś użyć CHAR_BIT dla pewności, gdybyś chciał użyć go na czymś co nie jest PC.

Btw: printuj tylko printowalne znaki ([isprint z <ctype.h>][1])
[1]: http://en.cppreference.com/w/c/string/byte/isalpha

2

Jak wejdzie EOF to będzie UB. ;-)

0

ale to EOF tylko dla plików?, ale dla scanf() jest potrzebne?

0

hmm
'Gdy wejście jest już puste funkcja getchar zwraca właśnie charakterystyczną wartość zwaną EOF'
ale przecież w tym przypadku nie możę być pustego wejścia bo program czeka na znak, a przestanie czekać jak będzie '\n'

0

ale to nie możliwe aby EOF się wpisał, bo c =getchar()) != '\n' Eof musiałby być między przed \n , co nie jest możliwe, co nie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1