用数组输入字符串然后输入一个字符查找在字符串中出现的次数,该怎么处理

用数组输入字符串然后输入一个字符查找在字符串中出现的次数
//输入一个字符串,然后输入一个字符,计算该字符在字符串中出现的次数,但是最结果总是比真实个数大1,即字符出现两次,那么结果会是3,大侠们看看我的代码,哪里错了,感激不尽
#include<stdio.h>
int main()
{
int i,count ;
char a;
char str[10];

i = 0;
while((str[i] = getchar()) != '\n'){
i ++;
str[i] = '\0';
}
  printf("Enter an digit:");
scanf("%c",&a);
   
count = 0;
for(i = 0;str[i] ;i ++)
if( str[i] == a)
count ++;
else
continue;

printf("count = %d\n",count);
return 0;
}


------解决方案--------------------
C/C++ code

#include<stdio.h>
int main()
{
    int i,count ;
    char a;
    char str[10] = {0};

    i = 0;
    while((str[i] = getchar()) != '\n')
    {
        i ++;
        str[i] = '\0';
    }
    printf("Enter an digit:");
    scanf("%c",&a);

    count = 0;
    for(i = 0;str[i] ;i ++)
        if( str[i] == a)
        {
            count ++;
        }
        else
            continue;

    printf("count = %d\n",count);
    return 0;
}

------解决方案--------------------
C/C++ code
#include<stdio.h>
int main()
{
int i,count ;
char a;
char str[10];

i = 0;
while((str[i] = getchar()) != '\n'){
i ++;
str[i] = '\0'; // 当回车后,这段不会执行,str可能没结束符,会导致越界
}
  printf("Enter an digit:"); // 为什么是an而不是a,digit是数字,字符应该是Character
scanf("%c",&a);
    
count = 0;
for(i = 0;str[i] ;i ++)
if( str[i] == a)
count ++;
else
continue; // 这个没必要吧

printf("count = %d\n",count);
return 0;
}

------解决方案--------------------
C/C++ code

#include<stdio.h>
int main()
{
    int i,count ;
    char a;
    char str[10];

    i = 0;
    while((str[i] = getchar()) != '\n')
    {
        i ++;
    }
    str[i] = '\0';//当跳出输入循环的时候的后一个字符置为结束符
    printf("Enter an digit:");
    scanf("%c",&a);
    
    count = 0;
    for(i = 0;str[i]!='\0' ;i ++)//你的for循环跳出的判断条件也有问题
    {
        if( str[i] == a)
        {
            count ++;
        }
        else
        {
            continue;
        }
    }

    printf("count = %d\n",count);
    return 0;
}

------解决方案--------------------
主要问题是数组越界,这是修改后的代码:
#include<stdio.h>

int main()
{
int i,count ;
char a;
char str[10];

i = 0;
while((str[i] = getchar()) != '\n')
i ++;
if(i>9)
str[9]='\0';
else
str[i-1]='\0';
printf("str: %s\n", str);
printf("Enter a character:");
scanf("%c",&a);
count = 0;
for(i = 0;str[i] ;i ++)
if( str[i] == a)
count ++;
printf("count = %d\n",count);
return 0;
}