[C] Błąd przy wykonywaniu pętli

0

Próbuję wykonać program który pobiera od użytkownika deklarowaną ilość char-ów. Jednak podczas wykonywania pętli for dochodzi do dziwacznych błędów. Wyskakują dwa printfy na raz a potem program się zamyka w wyniku błędu. Czy ktoś coś rozumie?

#include <stdio.h>
#include <stdlib.h>
void Vovels(int Size,char Tab[])
{
    int i, I;
    I=0;
    for(i=0;i<Size;i++)
    {
        if(Tab[i]=='A'||Tab[i]=='a'||Tab[i]=='E'||Tab[i]=='e'||Tab[i]=='I'||Tab[i]=='i'||Tab[i]=='O'||Tab[i]=='o'||Tab[i]=='Y'||Tab[i]=='y')
        {
            I++;
        }
    printf("There are %d Vowels in this set of chars\n", I);
    printf("There are %d Consonants in this set of chars\n",Size-I);
    }
}
int main()
{
    int i;
    int Size;
    printf("How many Chars you want to check? ");
    scanf("%d", &Size);
    printf("Scaning %d chars\n",Size);
    char Tab[Size];
    for(i=0;i<Size;i++)
    {
        printf("Give a char please: ");
        scanf("%c",&Tab[i]);
    }
    Vovels(Size,Tab[Size]);
    return 0;
}

0

Pisząc w ten sposób:

Vovels(Size, Tab[Size]);

nie przekazujesz tablicy o rozmiarze Size a element pod indeksem Size w tablicy Tab.

Przekaż tablicę w ten sposób:

Vovels(Size, Tab);
0

Dziękuje za wskazanie błędu. Jednak podstawowy problem z pętlą for w mainie pozostaje. Z jakiegoś powodu w tej pętli scanf wykonuje się tylko co drugi przebieg.screenshot-20180130223126.png

Jeśli ktoś coś rozumie..

0

Problem jest taki że gdy wpisujesz A i dajesz enter to w buforze są 2 znaki 'A' oraz '\n'.
Rozwiązanie na szczęście jest bardzo proste:
Zamiast

scanf("%c", &Tab[i]);

Zrób

scanf("%c\n", &Tab[i]);
0

Dziękuje! Problem rozwiązany.

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