【发布时间】:2013-04-15 05:38:41
【问题描述】:
我有错误说没有重载函数“calMean”的实例与参数列表匹配
这是我的代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILE_NAME 20
#define LIST_SIZE 50
float calMean(RECORD list[], int count)
typedef struct
{
char *name;
int score;
}RECORD;
int main (void)
{
// Declarations
float mean;
FILE *fp;
char fileName[FILE_NAME];
RECORD list[LIST_SIZE];
char buffer[100];
int count = 0;
int i;
// Statements
printf("Enter the file name: ");
gets(fileName);
fp = fopen(fileName, "r");
if(fp == NULL)
printf("Error cannot open the file!\n");
while(fgets(buffer, 100, fp) != NULL)
{
if( count >= LIST_SIZE)
{
printf("Only the first 50 data will be read!\n");
break;
}
if( count < LIST_SIZE)
{
list[count].name = (char*) malloc(strlen(buffer)*sizeof(char));
sscanf(buffer,"%[^,], %d", list[count].name, &list[count].score);
printf("name is %s and score is %d\n", list[count].name, list[count].score);
count++;
}
for( i =0; i < (LIST_SIZE - count); i++)
{
list[count + i].name = 0;
list[count + i].score = 0;
}
}
printf("Read in %d data records\n", count);
mean = calMean(list, count);
fclose(fp);
return 0;
}
float calMean(RECORD list[], int count)
{
float tempMean;
int sum;
int i;
for(i = 0; i < count; i++)
sum += list[i].score;
tempMean = sum/count;
return tempMean;
}
错误发生在 main 中 calMean 函数的函数调用中,我是结构新手,所以我认为我在 calMean 函数调用中编写列表参数列表的方式是错误的,有没有办法解决这个问题?我正在尝试计算结构中成员得分的平均值。
【问题讨论】:
-
尝试从
&count中删除&。 -
另请注意,听起来您正在尝试像编译 C++ 一样编译 C 代码,因此会出现 C++ 错误消息 - 将 .cpp 后缀更改为 .c 以获得更有意义的 C 特定错误消息.
-
其实和我之前做的一样,但仍然显示同样的错误,我的源文件也是 .c 而不是 .cpp
-
你确定这是 C 吗? C 中一般没有重载函数,但 C++ 中有。您是否使用 C++ 编译器(可能是 Windows 上的 MSVC)编译 C 代码?
-
我也认为我以前从未听说过 C 中的重载函数,只在 java 和 C++ 中使用过