c语言- 从.txt文件中·读取数据放到 structure array里面, 但是数据读取不对,有奇怪的数值出现,请问是什么问题?

问题遇到的现象和发生背景

VS写的代码,目的是从Sampldatafile.txt里读取数据然后放到DailySalesList,但是数据读取有问题,print出来第三个数据以及之后会乱码,不知道什么问题?代码如下:

问题相关代码,请勿粘贴截图
include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_PRODUCT_NAME_LEN  20

struct Date {
    int month;
    int day;
    int year;
};
struct SingleSaleRecord {
    int numberSold;
    double salePrice;
    struct Date saleDate;
};

struct DailySalesList { //array of daily product sale
    char name[20];
    int numberSold;
    double salePrice;
    struct Date saleDate;
};




void addSale(struct DailySalesList* sale, char* productName, struct SingleSaleRecord* saleRec) {
    int i = 0;
    while (sale[i].numberSold != 0) {
        i++;
    }
    strcpy(sale[i].name, productName);
    sale[i].numberSold = saleRec->numberSold;
    sale[i].salePrice = saleRec->salePrice;
    sale[i].saleDate.day = saleRec->saleDate.day;
    sale[i].saleDate.month = saleRec->saleDate.month;
    sale[i].saleDate.year = saleRec->saleDate.year;
    //stepin的时候可以看到,当i=2时,不知道为什么sale[i].numbersold 被assign了一个值为1;所以具体是问什么呢?这是不会改的问题。
    printf("%s %d %.2lf\n", sale[i].name, sale[i].numberSold, sale[i].salePrice);
    
}



int readSalesFile(FILE* fp, struct DailySalesList* dailySales)
{
    int numberSalesRead = 0, valuesRead;
    struct SingleSaleRecord saleRec = { 0 };
    char productName[MAX_PRODUCT_NAME_LEN];

    while (!feof(fp))
    {
        valuesRead = fscanf(fp, "%[^/]/%d/%lf/%d/%d/%d%*c", productName, &saleRec.numberSold, &saleRec.salePrice, &saleRec.saleDate.month, &saleRec.saleDate.day, &saleRec.saleDate.year);

        if (valuesRead > 0) {
            addSale(dailySales, productName, &saleRec);
            numberSalesRead++;
        }
    }
    return numberSalesRead;
}//do not modify 这个function是不能改变的,麻烦不要改谢谢!




void menuoptions(struct DailySalesList* sale, int maxsales) {

    int i;

    printf("DAY MONTH YEAR                       PRODUCT    #SOLD       PRICE\n");
    i = 0;
    while (i < maxsales) {
        printf("%3.2d %5.2d %4d                  %10s     %3d     %5.2lf\n", sale[i].saleDate.day, sale[i].saleDate.month, sale[i].saleDate.year, sale[i].name, sale[i].numberSold, sale[i].salePrice);
        i++;
    }//print出来的数据不对,(应该是因为上面读数据出错的问题)不能正确显示所有数据, 需要的output是
     /* DAY MONTH YEAR                       PRODUCT #SOLD   PRICE

        08    09 2021                     geraniums     1    9.99

        08    09 2021              bird of paradise     1   44.50

        08    09 2021                        tulips    12    3.99

        09    09 2021                     geraniums     6    9.99

        09    09 2021                     impatiens    12    2.00*/
    putchar('\n');
}



int main(void) {
    int numberSales;
    struct DailySalesList sale = {0};
    FILE* fp;


    fp = fopen("SampleDataFile.txt", "r");
    if (fp != NULL) {
        numberSales = readSalesFile(fp, &sale);
        fclose(fp);
        menuoptions(&sale, numberSales);
    }
    else {
        printf("Cannot read this file. Double check whether this file is exist.\n");
    }
}//可以正常运行


运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

需要的output是
DAY MONTH YEAR PRODUCT #SOLD PRICE

    08    09 2021                     geraniums     1    9.99

    08    09 2021              bird of paradise     1   44.50

    08    09 2021                        tulips    12    3.99

    09    09 2021                     geraniums     6    9.99

    09    09 2021                     impatiens    12    2.00

求帮忙解答,实在想不出来了