这是我调用一个函数的程序的一部分,该函数从“.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_ */
如有任何帮助,我们将不胜感激。还有更多代码,但我认为这是最重要的部分。
最佳答案
程序中使用的ReadFile函数名与“windows.h”中的ReadFile函数名相同。错误“函数‘ReadFile’的参数太少”很可能是由于程序试图使用错误的参数从窗口调用该函数引起的。删除“windows.h”或将函数 ReadFile 重命名为其他名称可解决问题。
关于c - 为什么我不能调用我的函数(C)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19303507/