gpt4 book ai didi

c - 从文件读取到数组 - C

转载 作者:太空宇宙 更新时间:2023-11-04 07:19:50 25 4
gpt4 key购买 nike

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 Prune-Basket 1394854688 1394854624 0.00
1394854864 Pear-Basket 1394854688 1394854624 0.00
1394854864 Peach-Basket 1394854688 1394854624 0.00
1394854864 Deluxe-Tower 1394854688 1394854624 0.00

原始文件如下所示。所以所有的数字都没有被扫描进来,我不明白为什么......

101 Prune-Basket 065 060 25.00
105 Pear-Basket 048 060 30.00
107 Peach-Basket 071 060 32.00
202 Deluxe-Tower 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);
}

如何在函数或许多其他地方使用 C Structure?在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);
}
}

关于c - 从文件读取到数组 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22187047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com