Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Łańcuchy w C, fgets, ctypeh

Ostatnio zmodyfikowano 2017-12-29 14:57
Autor Wiadomość
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.
C/C++
#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.
P-168175
RazzorFlame
» 2017-12-28 15:57:48
Wczytaj cały ciąg znaków a następnie przeiteruj po każdym znaku:
C/C++
#include <stdio.h>
#include <ctype.h>
#include <string.h>   // strlen
#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;
}
P-168186
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.
P-168202
« 1 »
  Strona 1 z 1