文字列の母音を数えるプログラムを作成しようとしています。 vowelsInStringが出力されると、すべての値はゼロのままです。配列に整数を追加できません
#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]);
}
}
20行目のif文に適合しないようです。なぜですか?
char stringToTest[] = {}; // This is not standard C
この宣言は、長さゼロの配列を作成し、Cの拡張機能である:
if(stringToTest[i] == vowels[j])
サイズを指定せずに空のイニシャライザを使用した場合、 'stringToTest []'はどれくらい大きいと思いますか?また、 '%c'は' scanf() 'に文字列ではなく単一の' char' *を読み込ませるよう指示します。 – Dmitri
'' enow''を '母音'にするともっと簡単になります。 'string.h'関数を使うことができれば、*ポインタ*と' strpbrk'を使うことも魅力的かもしれません。 –