如何用C语言编写一个计算“_”字符之间字符数的程序?

u3r8eeie  于 2023-02-11  发布在  其他
关注(0)|答案(2)|浏览(115)
  • 问题1-对于输入:"所有_我_需要_",对应的输出为:3 1 4.
  • 问题2-对于输入:"All_I_Need",对应的输出相同:三一四
  • 问题3-对于输入:"全部_",对应的输出为:3
  • 问题4-对于输入:"全部",对应输出相同:3

虽然我的代码解决了问题1,但给出了正确的输出:314,在第二题中,它给出了:3 1 0 0 0 0.用同样的方法,我的代码解决了问题3,给出了正确的输出:3,但对于问题4,它给出了输出:0 0 0

int password_numbers(const char *s){
    int count = 0;
    for(int i = 0; i < strlen(s); i++)
    {
        if(s[i] != '_')
        {
            count++;
        }

        else
            return count;
    }
    return 0;
}

int array_password_numbers(int *a, int n, char *s){
    int result = 0;
    int i = 0;
    int streak;
    while( i < strlen(s) ){
        streak = password_numbers(s + i);
        a[result++] = streak;
        i+=streak + 1;
    }

    return result;
}
pxy2qtax

pxy2qtax1#

int count = 0;
for(int i = 0; s[i] != '\0'; ++i)
{
    if(s[i] == '_')
    {
        printf("%d ", count);
        count = 0;
    }
    else
    {
        ++count;
    }
}
if(count > 0)
{
    printf("%d", count);
}
zfciruhq

zfciruhq2#

您的代码几乎是正确的。您所遗漏的只是如果_不在s中,password_numbers()应该返回什么。如果是这种情况,那么您位于原始字符串的末尾,并且没有终止的_。因此,您应该返回strlen(s)而不是0。通过该更改,您的代码将正确工作。

相关问题