gpt4 book ai didi

c - 使用结构时 fscanf 的问题

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

typedef struct computer
{
char serialNumber[8];
int price;
int GBofRAM;
int GBofHardDrive;
}Computer;

Computer* readComputers(char* filename);


int main(int argc, char** argv) {

if(argc!=2){
printf("Invalid number of arguments");
return 1;
}
Computer* x=readComputers(argv[1]);
printComputers(x);

free(x);
return (EXIT_SUCCESS);
}
Computer* readComputers(char* filename)
{

Computer* cptr=malloc(sizeof(Computer)*6);
FILE* fp=fopen(filename, "r");
if(fp==NULL){
printf("Failed to open file %s", filename);
return;
}
//fread(cptr, sizeof(Computer), 6, fp);

fscanf(fp,"%s, %d, %d, %d", Computer->serialNumber, &Computer->price, &Computer->GBofRAM, &Computer->GBofHardDrive);

fclose(fp);
return cptr;

我在使此 fscanf() 正常工作时遇到问题。它说它在 Computer->serialNumber 之前缺少一个表达式,但我不确定为什么会这样?我试过查看 Tutorialspoint,但这并没有太大帮助。

最佳答案

根据您的代码,

Computer->serialNumber

是一个无效的声明。 Computer 这里是一个(用户定义的)数据类型。你不能尊重这一点。您需要使用 cptr 作为您定义的变量名。

此外,在使用返回的指针之前,请始终检查 malloc() 是否成功。否则,如果 malloc() 失败,您将通过访问无效指针来调用未定义的行为。

关于c - 使用结构时 fscanf 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32774888/

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