Łańcuchy w C, fgets, ctypeh
Ostatnio zmodyfikowano 2017-12-29 14:57
Bercik97 Temat założony przez niniejszego użytkownika |
Łańcuchy w C, fgets, ctypeh » 2017-12-28 14:14:27 Witam, dopiero zaczynam uczyć się łańcuchów. Mam napisać program, który pobiera dane wejściowe do momentu wystąpienia końca pliku i podaje ile było małych liter, dużych liter, znaków przestankowych, cyfr oraz słów. I nie mam pojęcia dlaczego mi to nie działa, ze scanf też próbowałem ale też pokazuje mi 0. Jak mniemam coś źle jest z tą tablicą. Oto mój kod. #include <stdio.h> #include <ctype.h> #define SIZE 50
int main() { int male = 0, duze = 0, cyfry = 0, znaki = 0, slowa = 0; char ch[ SIZE ]; puts( "Wprowadz tekst(wystapienie konca pliku konczy program):" ); while(( fgets( ch, SIZE, stdin ) ) != NULL ) { if( islower( ch ) ) male++; else if( isupper( ch ) ) duze++; else if( isdigit( ch ) ) cyfry++; else if( ispunct( ch ) ) znaki++; } printf( "Male litery: %d\n" "Duze litery: %d\n" "Liczby: %d\n" "Znaki przestankowe: %d\n" "Slowa: %d", male, duze, cyfry, znaki, slowa ); return 0; }
Ps. wiem że nie ma warunku na słowa ale jeszcze go nie rozkminiałem jak to wcześniejsze nie działa. |
|
RazzorFlame |
» 2017-12-28 15:57:48 Wczytaj cały ciąg znaków a następnie przeiteruj po każdym znaku: #include <stdio.h> #include <ctype.h> #include <string.h> #define SIZE 50
int main() { int male = 0, duze = 0, cyfry = 0, znaki = 0, slowa = 0; char ch[ SIZE ]; puts( "Wprowadz tekst(wystapienie konca pliku konczy program):" ); scanf( "%s", ch ); for( size_t i = 0; i < strlen( ch ); i++ ) { if( islower( ch[ i ] ) ) male++; else if( isupper( ch[ i ] ) ) duze++; else if( isdigit( ch[ i ] ) ) cyfry++; else if( ispunct( ch[ i ] ) ) znaki++; } printf( "Male litery: %d\n" "Duze litery: %d\n" "Liczby: %d\n" "Znaki przestankowe: %d\n" "Slowa: %d", male, duze, cyfry, znaki, slowa ); return 0; }
|
|
Bercik97 Temat założony przez niniejszego użytkownika |
» 2017-12-29 14:57:54 Dzięki, zrobiłem to bez size_t oraz z fgets i też działa. |
|
« 1 » |