gpt4 book ai didi

c - 如何将 char 数组转换为结构数组?

转载 作者:行者123 更新时间:2023-11-30 20:39:52 24 4
gpt4 key购买 nike

我正在做一项作业,有点困惑。作业的目标是从 txt 文档中读取零件名称并将其放入零件结构中。我已使用 fgets() 将信息放入 char 数组中,但现在不确定如何将其转换为结构。

#include <stdio.h>
#include <string.h>

typedef struct part
{
char pname[25];
char pnumber[8];
double weight;
char supplier1[5];
char supplier2[5];
int in_stock;
} Part;

void main()
{
Part partlist[100];
char buffer[260];
FILE *fp;
int i = 0;
fp = fopen("part_data.txt", "r");
if (fp == NULL)
{
printf("Could not open file.\n");
}
while (!feof(fp)) {
if (fgets(buffer,260,fp)) {
printf("%s\n", buffer);
}
}
fclose (fp);
}

我尝试放入结构中的数据示例如下:

antenna          4553-02 1.9800 A123 B021  12
ratchet 2347-01 0.8725 A007 B021 49
seatbelt 1987-01 0.4310 A333 B001 61
pin 5637-03 0.0351 A007 B010 146
wing assembly 2372-02 6150.0 A333 B021 4

最佳答案

如果部件名称不包含任何数字,这可能会起作用。只要成功读取六个项目,fscanf 就会扫描文件。 %24[ a-zA-Z] 将跳过前导空格并读取最多 24 个大写或小写字母和空格。 %7s 将读取最多七个字符到下一个空格。 %lf 将读取 double 值,%4s 将读取最多四个字符到下一个空格。 %d 将读取整数。当 fscanf 无法读取六个项目(可能达到 EOF)时,while 循环将结束并且文件将被关闭。

int i = 0;
fp = fopen("part_data.txt", "r");
if (fp == NULL)
{
printf("Could not open file.\n");
}
else {
while ( ( fscanf ( fp, " %24[ a-zA-Z] %7s %lf %4s %4s %d"
, partlist[i].pname, partlist[i].pnumber, &partlist[i].weight
, partlist[i].supplier1, partlist[i].supplier2, &partlist[i].in_stock)) == 6) {
i++;
if ( i >= 99) {
break; // exit so as to not exceed array limits
}
}
fclose (fp);
}

关于c - 如何将 char 数组转换为结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25611211/

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