所以我制作了一个程序并且它无法正常工作,我想知道是否有人可以帮助我。也许这个想法不对,我不确定。 它应该找到所提供字符的两个出现之间的最大空间,并打印它,或者如果该字符至少出现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");
}
答案 0 :(得分:0)
max
和a[0]
。检查内部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");
}