所以我做了一个程序,但它不能正常工作,我想看看是否有人可以帮助我。也许连这个想法都不对,我不确定。它应该找到所提供字符的两个出现之间的最大空格,并打印它,或者如果该字符没有出现至少 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("%dn",max);
else printf("0n");
}
- 初始化
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("%dn",max); else printf("0n"); }