在C中读取文件时出现Bex错误

在C中读取文件时出现Bex错误,c,windows-7-x64,C,Windows 7 X64,在file count.c中,程序从文件中读取字符串,然后计算文件中给定的字符总数。以下是文件count.c中的代码行: #include <stdio.h> int main() #define max 1000 { char c, inpt[max]; int i; for (i=0; (c=getchar()) !='\n'; ++i){ inpt[i]=c; } printf("Count is %d. ",i); }

在file count.c中,程序从文件中读取字符串,然后计算文件中给定的字符总数。以下是文件count.c中的代码行:

#include <stdio.h>
int main()
#define max 1000
{
    char c, inpt[max];
    int i;
    for (i=0; (c=getchar()) !='\n'; ++i){
        inpt[i]=c;
    }
    printf("Count is %d. ",i);
}

如果文件只有一行,则程序将永远循环。此外,请检查
i
,然后尝试:

for (i = 0; i < (max - 1) && (c = getchar()) != EOF && c != '\n'; ++i)
{
    inpt[i] = c;
}

如果文件只有一行,则程序将永远循环。此外,请检查
i
,然后尝试:

for (i = 0; i < (max - 1) && (c = getchar()) != EOF && c != '\n'; ++i)
{
    inpt[i] = c;
}

如果文件只有一行,则程序将永远循环。此外,请检查
i
,然后尝试:

for (i = 0; i < (max - 1) && (c = getchar()) != EOF && c != '\n'; ++i)
{
    inpt[i] = c;
}

如果文件只有一行,则程序将永远循环。此外,请检查
i
,然后尝试:

for (i = 0; i < (max - 1) && (c = getchar()) != EOF && c != '\n'; ++i)
{
    inpt[i] = c;
}

这是一个缓冲区溢出异常。显然,Rehan.txt文件的前1000个字符中没有
'\n'
字符,因此循环尝试为大于999的
i
值写入
inpt[i]
。您可以通过检查EOF以及
i<1000
条件来防止这种情况的发生,这样,对于大于缓冲区的文件,就不会出现相同的错误


最后,如果这是所有程序需要做的,考虑消除<代码>您的代码写入此缓冲区,但不从中读取。

这是缓冲区溢出异常。显然,Rehan.txt文件的前1000个字符中没有
'\n'
字符,因此循环尝试为大于999的
i
值写入
inpt[i]
。您可以通过检查EOF以及
i<1000
条件来防止这种情况的发生,这样,对于大于缓冲区的文件,就不会出现相同的错误


最后,如果这是所有程序需要做的,考虑消除<代码>您的代码写入此缓冲区,但不从中读取。

这是缓冲区溢出异常。显然,Rehan.txt文件的前1000个字符中没有
'\n'
字符,因此循环尝试为大于999的
i
值写入
inpt[i]
。您可以通过检查EOF以及
i<1000
条件来防止这种情况的发生,这样,对于大于缓冲区的文件,就不会出现相同的错误


最后,如果这是所有程序需要做的,考虑消除<代码>您的代码写入此缓冲区,但不从中读取。

这是缓冲区溢出异常。显然,Rehan.txt文件的前1000个字符中没有
'\n'
字符,因此循环尝试为大于999的
i
值写入
inpt[i]
。您可以通过检查EOF以及
i<1000
条件来防止这种情况的发生,这样,对于大于缓冲区的文件,就不会出现相同的错误


最后,如果这是所有程序需要做的,考虑消除<代码>您的代码写入此缓冲区,但不从中读取。

1.-文件没有\n

2.-文件长度超过1000

你应该注意程序不会到达文件的末尾

你的节目重拍了

#include <stdio.h>
int main()
#define max 1000
{
    char c, inpt[max];
    int i;
    bool bEnd=false;
    for (i=0; !bEnd; i++)
    {
        c=getchar();
        if(c=='\n' || c==EOF)
        {
            inpt[i]=0;
            bEnd=true;
        }
        else
        {
            inpt[i]=c;
        }
    }
    printf("Count is %d. ",i);
}
#包括
int main()
#定义最大1000
{
字符c,输入[max];
int i;
布尔弯曲=假;
对于(i=0;!bEnd;i++)
{
c=getchar();
如果(c='\n'| | c==EOF)
{
输入[i]=0;
弯曲=真;
}
其他的
{
输入[i]=c;
}
}
printf(“计数为%d.”,i);
}

1.-该文件没有\n

2.-文件长度超过1000

你应该注意程序不会到达文件的末尾

你的节目重拍了

#include <stdio.h>
int main()
#define max 1000
{
    char c, inpt[max];
    int i;
    bool bEnd=false;
    for (i=0; !bEnd; i++)
    {
        c=getchar();
        if(c=='\n' || c==EOF)
        {
            inpt[i]=0;
            bEnd=true;
        }
        else
        {
            inpt[i]=c;
        }
    }
    printf("Count is %d. ",i);
}
#包括
int main()
#定义最大1000
{
字符c,输入[max];
int i;
布尔弯曲=假;
对于(i=0;!bEnd;i++)
{
c=getchar();
如果(c='\n'| | c==EOF)
{
输入[i]=0;
弯曲=真;
}
其他的
{
输入[i]=c;
}
}
printf(“计数为%d.”,i);
}

1.-该文件没有\n

2.-文件长度超过1000

你应该注意程序不会到达文件的末尾

你的节目重拍了

#include <stdio.h>
int main()
#define max 1000
{
    char c, inpt[max];
    int i;
    bool bEnd=false;
    for (i=0; !bEnd; i++)
    {
        c=getchar();
        if(c=='\n' || c==EOF)
        {
            inpt[i]=0;
            bEnd=true;
        }
        else
        {
            inpt[i]=c;
        }
    }
    printf("Count is %d. ",i);
}
#包括
int main()
#定义最大1000
{
字符c,输入[max];
int i;
布尔弯曲=假;
对于(i=0;!bEnd;i++)
{
c=getchar();
如果(c='\n'| | c==EOF)
{
输入[i]=0;
弯曲=真;
}
其他的
{
输入[i]=c;
}
}
printf(“计数为%d.”,i);
}

1.-该文件没有\n

2.-文件长度超过1000

你应该注意程序不会到达文件的末尾

你的节目重拍了

#include <stdio.h>
int main()
#define max 1000
{
    char c, inpt[max];
    int i;
    bool bEnd=false;
    for (i=0; !bEnd; i++)
    {
        c=getchar();
        if(c=='\n' || c==EOF)
        {
            inpt[i]=0;
            bEnd=true;
        }
        else
        {
            inpt[i]=c;
        }
    }
    printf("Count is %d. ",i);
}
#包括
int main()
#定义最大1000
{
字符c,输入[max];
int i;
布尔弯曲=假;
对于(i=0;!bEnd;i++)
{
c=getchar();
如果(c='\n'| | c==EOF)
{
输入[i]=0;
弯曲=真;
}
其他的
{
输入[i]=c;
}
}
printf(“计数为%d.”,i);
}

i<1000
在执行EOF时未给出正确的输出。感谢您的明确解释。
i<1000
在执行EOF时没有给出正确的输出。感谢您的明确解释。
i<1000
在执行EOF时没有给出正确的输出。感谢您的明确解释。
i<1000
在执行EOF时没有给出正确的输出。谢谢你的清楚解释。