2014-12-13 100 views
-1

我试图找出字符串中的元音数量,但我没有找到未初始化数组长度的想法。我将遍历所有的数组元素,并返回元音的否。我通过论坛并阅读,有内置的strlen函数,但我想让我自己的函数了解工作,不仅仅是我的工作done.i “已经实现了这个使用for循环遍历所有准备,但它是一个失败..自定义函数来查找数组的长度?

char strin[]; 
printf("Check for the number of vowels in the string : \n"); 
scanf("%s" , &strin); 
int Number_of_vowels(strin); 


//a custom function to find the string length. 
int string_len(char[] string) 
{ 
    //code to find the length 
} 
//a custom function to do the check. 
int Number_of_vowels(char strin[]) 
{ 
    for(i = 0 ; i < stringlength , i++) 
    { 
     //check if the input char is vowel. 
    } 
} 
+0

如果数组未被初始化,那么它没有长度。 – csmckelvey 2014-12-13 17:59:14

+0

您必须为Number_of_vowels添加一个长度参数。一个字符串的长度可以通过strlen(strin)来检索; – noxmetus 2014-12-13 18:03:02

回答

0

使用scanf的返回值。

int stringlength; 
int vowels; 

stringlength = scanf("%s", &strin); 
vowels = Number_of_vowels(strin, stringlength); 

int Number_of_vowels(char strin[], int stringlength) 
{ 
    int vowels = 0; 
    int i; 
    for (i = 0; i < stringlength, i++) { 
     // Code testing for vowels (possibly a switch loop testing ASCII values) 
    } 

    return vowels; 
} 
+0

你还必须指定一个长度的严格阵列。你在上面的代码中没有意识到它:strin [] =“Hello World!...”C使strings []的长度为+ 1.所以在这种情况下,你的输入有效切割为31个字符该数组将为32且为空字符)。如果你真的想要无限输入,你将不得不一次使用缓冲区并读取块。最简单的是循环STDIN输入,直到达到EOF。 – Carlise 2014-12-13 23:26:59

1

对不起,因为我无法评论,但我也对我的iPad上因此,格式化会很糟糕。但是,为什么当它传递到Number_of_Vowels()时,你只需要把它的长度设为strin[]

无论如何,您已经通过strin[]数组,因此该数组的属性也应该进入该方法。

+0

如果初始化,那么用户将失去输入大号字符的能力......我希望char数组的限制更少。 – 2014-12-13 18:23:56

+0

@AkashChowdary,用户最多可以键入31个字符,因为数组的长度为32 – 2014-12-14 03:27:29

+0

如果我没有intialise是我的问题?如果我没有初始化字符串数组怎么办? – 2014-12-15 11:51:37