c - fscanf 命令中标记前的预期主表达式

标签 c struct syntax-error

所以我的一个 friend 发给我这个,但不幸的是我的 C 技能有点生疏,所以我可能会遗漏一些简单的东西。问题存在于第二个 fscanf 命令中。

错误是[Error] expected primary-expression before '[' token。这可能是很容易错过的东西,但我在发布之前尝试搜索了一下。感谢您的帮助!

struct materials
{
  char name,product;
  int code,code1,number_of_parts,quantity1,number_of_parts1,quantity2;     
};
typedef struct materials mater;
int main()
{
 int result(int x)  ; 
 int number1,j,i,result1,number2,k,z; 
 FILE *fp;
    materials* listOfMaterials; 
 fp = fopen("datain.txt", "r");

 if (fp!=NULL)
 {
 fscanf(fp, "%d\n",&number1);

 listOfMaterials = (mater*)malloc(number1 * sizeof( mater));

 for(j=1; j<number1; j++) {
  fscanf (fp, "%d %d %d %s\n", &mater[j].code, &mater[j].quantity1, &mater[j].number_of_parts, mater[j].name);
        if (mater[j].quantity1 != 0)
    {
           mater[j].code1=(int *)malloc(sizeof(int)*mater[j].quantity1);
           mater[j].number_of_parts1=(int *)malloc(sizeof(int) * mater[j].quantity1);                     
       fscanf (fp,"%d %d\n",&mater[j].code1,&mater[j].number_of_parts1);      
    }
}

最佳答案

typedef struct materials mater 定义了一个名为 mater 的新类型

在代码的后面,您尝试将它用作变量,所以我猜您的意思是定义一个变量,而不是类型:

struct materials mater;

或者只是:

materials mater;

关于c - fscanf 命令中标记前的预期主表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27341258/

相关文章:

javascript - 没有问题的解析错误

PREPARE stmt 中的 MySQL SP 语法错误

c - 如何打印交易品种的表格,交易品种名称

c - C中最好的计时方法?

c# - 在 C# 中对简单 C 共享对象文件使用 DllImport 时出现 DllNotFoundException

c - 将 union 与结构一起使用

c - 使用 Fork() 时的进程树是什么样的?

c - 无法将字符串添加到 C 中的 LinkedList

c - 获取成员请求不是结构或 union 错误

java - 语法错误: insert to complete classbody and mainclass