找到输入字符的两个之间最大空间的程序

时间:2015-04-16 07:20:14

标签: c character

所以我制作了一个程序并且它无法正常工作,我想知道是否有人可以帮助我。也许这个想法不对,我不确定。 它应该找到所提供字符的两个出现之间的最大空间,并打印它,或者如果该字符至少出现2次,则打印0。

 #include <stdio.h>
main()

{

int i=0,k=0,max,a[50],j;
char n,c;

printf("Insert the character:\n");

scanf("%c",&n);

while ((c=getchar()) != EOF)
{
 if (c==n)
        {
         c=getchar();
         while (c != n)
                 {
                  k++;
                  c=getchar();
                 }
         a[i]=k;
         k=0;
         i++;
        }
}



max=a[0];

for (j=1; j<i; j++)
        if (a[j]>max) max=a[j];



if (max>=2) printf("%d\n",max);

else printf("0\n");

}

1 个答案:

答案 0 :(得分:0)

  1. 初始化maxa[0]
  2. 检查内部while循环中的EOF

    #include <stdio.h>
    int main()
    {
        int i=0,k=0,max,a[50],j;
        char n,c;
        a[0] = 0;                                     // Initialize a[0]
        max  = 0;                                     // Initialize max
        printf("Insert the character:\n");
        scanf("%c",&n);
        int end_reached = 0;
        while ((c=getchar()) != EOF)
        {
            if (c==n)
            {
                c=getchar();
                while (c != n)
                {
                    if(c == EOF) {                     // Check for EOF
                        end_reached = 1;
                        break;
                    }
                    k++;
                    c=getchar();
                }
                if(!end_reached) {                     // Store k in a only if end was not reached.
                    a[i]=k;
                    k=0;
                    i++;
                }
            }
        }
        max=a[0];
        for (j=1; j<i; j++)
            if (a[j]>max)
                max=a[j];
        if (max>=2) 
            printf("%d\n",max);
        else 
            printf("0\n");
    }