运行和调试结果不同,求解

P1320 压缩技术(续集版)

hql123 @ 2020-05-11 20:02:44

为什么直接运行的时候比调试的时候多一个1

本地直接运行样例的时候发现多出了个1,然后调试的时候又是正常的输出的结果,求解

下面是代码:

#include <stdio.h>
#include <string.h>
int main()
{
    char q[250],p[4500];
    int i,j,k,l;
    int n,count=1;
    scanf("%s",&q);
    n=strlen(q);
    strcat(p,q);
    for(i=1;i<n;i++)
    {
        scanf("%s",&q);
        strcat(p,q);
    }
    printf("%d ",n);
    for(i=0;i<strlen(p);i++)
    {
        if(p[i]==p[i+1])
        {
            count++;
        }
        else
        {
        printf("%d ",count);
        count=1;
        }
    }

    return 0;
}

又是跟着题解思路手打翻车的一天 (๑ १д१)


by Steven__Chen @ 2020-05-11 20:04:47

@hql123 别忘了在某些奇妙的地方加上return 0;


by Steven__Chen @ 2020-05-11 20:06:30

或是for循环边界的问题


by hql123 @ 2020-05-11 20:14:30

@Steven__Chen

运行结果是这样7 1 3 1 6 1 6 4 3 1 6 1 6 1 3 7

调试结果是这样7 3 1 6 1 6 4 3 1 6 1 6 1 3 7

for边界什么还是不太明白(觉得边界应该在最后面多出来,不明白它为什么在前面多出来)


by Sun_god @ 2020-07-17 15:31:34

只有当p[i]==p[i+1]不满足的时候才会输出count的结果,肯定是这个地方的问题了,至于运行和调试的结果不一样,您看字符数组里进去什么别的字符了么。 这个问题解决了么,这个问题解决掉过了么?


|