【问题标题】:Custom Function to find the length of array?自定义函数查找数组的长度?
【发布时间】:2014-12-13 17:57:41
【问题描述】:

我正在尝试找出字符串中元音的数量,但我不知道如何找到未初始化数组的长度。我将遍历所有数组元素并返回元音的数量。我浏览了论坛并读到有内置的 strlen 函数,但我想让我自己的函数理解工作不仅仅是完成我的工作。我已经使用 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.
    }
}

【问题讨论】:

  • 如果数组未初始化,则它没有长度。
  • 您必须向 Number_of_vowels 添加一个长度参数。字符串的长度可以通过strlen(strin);获取到

标签: arrays string char string-length


【解决方案1】:

抱歉,我还不能发表评论,我也在 iPad 上,所以格式化会很糟糕。但是为什么不直接取strin[] 的长度,当它被传递到Number_of_Vowels() 时呢?

您已经将strin[] 数组传递给它,所以该数组的属性也应该进入方法。

【讨论】:

  • 如果它被初始化,那么用户将失去输入大量字符的能力......我希望 char 数组的限制更少。
  • @AkashChowdary ,用户最多可以输入 31 个字符,因为数组的长度是 32
  • 如果我没有初始化怎么办是我的问题??如果我没有初始化字符串数组怎么办??
【解决方案2】:

使用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;
}

【讨论】:

  • 您还必须指定字符串数组的长度。您在上面的代码中没有意识到:strin[] = "Hello World!..." C 使 strin[] 字符串的长度 + 1。因此,在这种情况下,您有效地将输入减少到 31 个字符(数组将是 32 与空字符)。如果你真的想要无限的输入,你将不得不一次使用缓冲区和读取块。最简单的方法是循环 STDIN 输入直到到达 EOF。
猜你喜欢
  • 1970-01-01
  • 2013-07-09
  • 2011-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-29
  • 2021-02-13
  • 1970-01-01
相关资源
最近更新 更多