Как сделать так, чтобы последняя строка файла .txt не печаталась дважды? - PullRequest
0 голосов
/ 02 апреля 2020

Я пытался напечатать список, взяв значения из файла .txt. И я был успешным. Но есть проблема по какой-то причине, последняя строка печатается дважды. Я использовал бесконечность для l oop до l oop через файл и использовал условный оператор, чтобы отделиться от l oop, если он достигнет конца файла. Таким образом, согласно этому коду, мой файл должен был перестать печататься сразу после того, как он достигнет конца файла. Но почему-то последнее значение печатается дважды. Почему это происходит и как решить эту проблему. Вот код и изображение вывода:

void readSpendMoney()
{
    FILE *fptr;
    struct spendMoney r;
    int i=1;
    char ch;
    fptr = fopen("SpendMoney.txt", "r");
    printf("\n\n\t\t***List of your spending***\n\n");
    printf("SL.      Name of item       Cost\n");
    for( ; ; )
    {
        if((ch = fgetc(fptr)) == EOF)
        {
            break;
        }
        else
        {
            fscanf(fptr,"%[^\n]s ", &r.nameItem);
            fscanf(fptr,"%f", &r.cost);

            printf("%d %15s %15.2f\n",i,r.nameItem,r.cost);
            i++;
        }

    }
    fclose(fptr);

enter image description here

...