Я пытаюсь создать программу, которая подсчитывает гласные в строке. Когда печатается гласнаяInString, все значения остаются на нуле.Невозможно добавить в целое число в массив
#include <stdio.h>
#include <stdlib.h>
void printfArray(int array[]);
int main()
{
char stringToTest[] = {}, vowels[5] = {'a', 'e', 'i', 'o', 'u'};
int i, j, numOfVowels, vowelsInString[5] = {0, 0, 0, 0, 0};
numOfVowels = 0;
printf("Enter: ");
scanf("%c", &stringToTest);
for(i=0; i<sizeof(stringToTest); i++)
{
for(j=0; j<sizeof(vowels); j++)
{
if(stringToTest[i] == vowels[j])
{
numOfVowels++;
vowelsInString[j]++;
printf("%d",vowelsInString[j]);
}
}
}
printfArray(vowelsInString);
}
void printfArray(int array[])
{
int i;
for(i=0; i<=sizeof(array); i++)
{
printf("%d\n", array[i]);
}
}
Похоже, что это не соответствует утверждению if на линии 20. Почему?
if(stringToTest[i] == vowels[j])
Как вы думаете, насколько велика 'stringToTest []', если вы не указали размер и использовали пустой инициализатор? Кроме того, '% c' сообщает' scanf() 'читать * один символ' char' *, а не строку. – Dmitri
Вы можете найти, что 'vowels'' enum' упрощает жизнь. Если вы можете использовать 'string.h' функции, использование нескольких указателей * и' strpbrk' также может быть привлекательным. –