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

Program wyświetlający, użyte znaki w zdaniu napisanym z klawiatury
bartek164
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 534
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

Kopiuj
#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;
}

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
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

wujnia
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 161
2

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

bartek164
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 534
0

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

bartek164
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 534
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'

bartek164
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 534
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?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.