我的循环执行的次数比预期的多

时间:2018-01-24 18:29:17

标签: c file loops

您好我写了一个函数,从文件中输入一个字符串,然后打印出答案,现在我的循环正在执行更多,然后文件有行: 这是我的代码:

    void CalculateAll()
{
    char str[SIZE];
    int ans;

    FILE* p = fopen("Expressions.txt", "r");
    if (p == NULL)
    {
        printf("FAIL");
        return;
    }
    while (!feof(p))
    {
        int i = 0;
        fgets(str, SIZE - 1, p);
        while (str[i] != '\n')i++;
        str[i] = 0;

        ans = CalculateExpression(str);
        printf("%d\n", ans);
    }


}

文件有

121 + 34 =
562 + 45 =
100 / 10 =

输出应为

155 
607 
10

但我得到了:

155
607 
10
10

并且我的循环再次运行,即使我到达文件的末尾,是否有人有想法? 编辑:它不是同一个问题..

当我将代码更改为此时,我的第一行就消失了:

void CalculateAll()
{
    char str[SIZE];
    int ans;

    FILE* p = fopen("Expressions.txt", "r");
    if (p == NULL)
    {
        printf("FAIL");
        return;
    }
    while ((fgets(str, SIZE - 1, p)))
    {

        int i = 0;
        fgets(str, SIZE - 1, p);
        while (str[i] != '\n')i++;
        str[i] = 0;

        ans = CalculateExpression(str);
        printf("%d\n", ans);
    }


}

0 个答案:

没有答案