调用函数传递数组

时间:2014-07-19 07:05:59

标签: c++ c arrays function

我想输入文字和特定字符。 之后,我想计算文本中包含的字符数。

我的代码

#include <stdio.h>
#include <stdlib.h>
int counting(char text[], char character);
int main()
{
    char text[20];
    char character;
    int a;
    printf("Enter text!\n");
    scanf("%s", text);
    printf("Enter character!\n");
    scanf("%s", character);
    a= counting(text, character);
    printf("Text contain %d character!\n", a);

}

和计数功能

int counting(char text[], char character)
{
int i=0;
int counter=0;
while(text[i] != '\0')
    {
        if  (text[i]==character)
            {
                counter++;
            }           
    }
i++;
return counter;
}


错误:
enter image description here

3 个答案:

答案 0 :(得分:3)

阅读角色的行必须是:

scanf(" %c", &character);

此外,

scanf("%s", text);

不安全。如果用户输入的字符串长度超过19个字符,您将写入未经授权的内存,这将导致未定义的行为。

使用

scanf("%19s", text);

答案 1 :(得分:2)

在函数int counting(...)

while(text[i] != '\0')
    {
        if  (text[i]==character)
            {
                counter++;
            }           
    }
i++;

i++内需要while..loop

答案 2 :(得分:0)

你有两个问题。

1)您正在将特定字符作为字符串阅读,因此您必须将scanf("%s", character);更改为scanf(" %c", character);

2)在函数counting() i++中需要处于while循环中,这样就不会进入无限循环。