int main()
{

    FILE* infile1;

    int stockCode[15];
    char stockName[100];
    int stockQuantity[15];
    int stockReorder[15];
    int unitPrice[15];
    int i;

    infile1  = fopen("NUSTOCK.TXT", "r");

    while(fscanf(infile1, "%d %s %d %d %f",
         &stockCode, stockName, &stockQuantity, &stockReorder, &unitPrice) != EOF)
    {
        printf("  %3d  %-18s  %3d  %3d  %6.2f \n",
          stockCode, stockName, stockQuantity, stockReorder, unitPrice);
    }

    fclose(infile1);

}

我要做的是从一个文件中获取信息并将其存储到5个单独的数组中。但是,当输出时,它只正确地输出名称。
1394854864梅篮1394854688 1394854624 0.00
1394854864梨篮1394854688 1394854624 0.00
1394854864桃篮1394854688 1394854624 0.00
1394854864豪华大厦1394854688 1394854624 0.00
原始文件如下所示。所以所有的号码都没有被扫描进去,我不明白为什么。。。
101李篮065060 25.00
105梨篮048060 30.00
107桃篮071 060 32.00
202豪华大厦054 040 45.00

最佳答案

我想你想做的是设计一个保存许多个人记录的结构。
每条记录包含:
代码
名称

重新排序
单价
你应该知道C语言中每种类型的意思。
我建议你重写代码如下:

#include <stdio.h>
#include <stdlib.h>
struct OneRecord{
    int code;
    char name[100];
    int quantity;
    int recorder;
    float unitPrice;
};

int main(){


    struct OneRecord* records = (struct OneRecord*)calloc(15, sizeof(struct OneRecord));
    int i = 0;

    FILE* infile1  = fopen("NUSTOCK.TXT", "r");
    int max=0;

    //%99s is used for max string length, because of we can protect the out of string's memory length
    while((max<15)&&(fscanf(infile1, "%d %99s %d %d %f",
                &records[i].code, records[i].name, &records[i].quantity, &records[i].recorder, &records[i].unitPrice) == 5))
    {
        i++;
        max++;
    }
    for(i=0;i<max;i++){
        printf("  %3d  %-18s  %3d  %3d  %6.2f \n",
                records[i].code,records[i].name,records[i].quantity,records[i].recorder,records[i].unitPrice);
    }

    fclose(infile1);
    free(records);
}

如何在函数或其他许多地方使用CStructure
在C语言中,有int、char、struct等不同的类型。您可以像许多其他类型一样使用struct
void printRecords(const struct OneRecord* records, int max)
{
    int i;
    for(i=0;i<max;i++){
        printf("  %3d  %-18s  %3d  %3d  %6.2f \n",
                records[i].code,records[i].name,records[i].quantity,records[i].recorder,records[i].unitPrice);
    }
}

10-02 07:19