1

这是一个程序的一部分,我在其中调用一个函数,该函数从“.dat”文件中读取组件并将输入保存到 Struct 的成员中。当我尝试从我的 main.c 调用该函数时,它会根据我的尝试给出各种错误。最值得注意的是:“ReadFile”类型冲突,“ReadFile”函数的参数太少。我还收到警告“从'ReadFile'传递参数使指针从没有强制转换的整数”和一些信息。

这是main.c

#include "MyData.h"
#include "NodalA.h"
#include "FileHandling.h"
#include <stdio.h>
#include "windows.h"

int main(){

    ComponentType *CircuitData;
    int numComp = 6;
    int numEl = 0;
    int numNodes = 0;
    CircuitData = malloc((numComp)*sizeof(ComponentType));
    ReadFile(CircuitData, &numEl, &numNodes);

    return 0;
}

这是 FileHandling.c:

#include "FileHandling.h"
#include "stdio.h"

void ReadFile(ComponentType *CircuitData, int *numEl, int *numNodes){
    numEl = 0;
    numNodes = 0;

    int index = 0;

    FILE *data;
    data = fopen("mydata.dat", "r");

    if (data == NULL){
        printf("Error: \"mydata.dat\" could not be opened");
    }
    else {
        while(!feof(data)){
            fscanf(data, "%s, %s, %s, %f", CircuitData[index].name, CircuitData[index].node1, CircuitData[index].node2, CircuitData[index].value);

            *CircuitData[index].node1 = extractInteger(CircuitData[index].node1);
            *CircuitData[index].node2 = extractInteger(CircuitData[index].node2);

            if(*CircuitData[index].node1 > *numNodes)
                *numNodes = *CircuitData[index].node1;

            if(*CircuitData[index].node2 > *numNodes)
                *numNodes = *CircuitData[index].node2;

            numEl++;
            index++;
        }
    }

    fclose(data);
}

这是 MyData.h

#ifndef MYDATA_H_
#define MYDATA_H_


typedef struct Comp{
    char name[5];   //Name of circuit component
    char node1[5], node2[5];    //2 nodes
    float value[5]; //value
}ComponentType;

#endif /* MYDATA_H_ */

任何帮助,将不胜感激。还有更多代码,但我认为这是最重要的部分。

4

1 回答 1

0

程序中使用的ReadFile函数名称与“windows.h”中的ReadFile函数名称相同。错误“函数'ReadFile'的参数太少”很可能是由于程序试图从带有错误参数的窗口调用函数引起的。删除“windows.h”或将函数 ReadFile 重命名为其他名称可以解决问题。

于 2013-10-21T15:08:14.917 回答