C参数与原型

时间:2015-11-17 15:58:12

标签: c

我试图从文件中读取并将其插入到我的结构复合变量“密码子”中。但是我得到了一个错误的参数并不匹配原型'。

这是我的.c:

#include <math.h>
#include <stdio.h>
#include "genome.h"

void LoadGeneticCode(filename, c){
    FILE *file = fopen(filename, "r");

}
int main()
{
    codon c[64]; //making array of c
    LoadGeneticCode('data.dat', c);
    return 0;
}

·H

typedef struct { char b1,b2,b3; int a;} codon;

void LoadGeneticCode(char *filename, codon c[64]);

生成文件

HEADERS = genome.h

default: genome

genome.o: genome.c $(HEADERS)
    gcc -c genome.c -o genome.o

genome: genome.o
    gcc  genome.o -o genome

clean:
    -rm -f genome.o
    -rm -f genome

我觉得这是一个简单的类型未命中比赛,但我不确定如何解决它。

3 个答案:

答案 0 :(得分:3)

第一个坏点:void LoadGeneticCode(filename, c){
您应该指定每个参数的类型。它们被视为int个参数,因此它与原型不匹配。

第二个坏点:LoadGeneticCode('data.dat', c);

在字符常量'data.dat'中放置多个字符并不好。它应该是一个字符串"data.dat"

你应该像这样写你的.c:

#include <math.h>
#include <stdio.h>
#include "genome.h"

void LoadGeneticCode(char *filename, codon c[64]){
    FILE *file = fopen(filename, "r");

}
int main(void)
{
    codon c[64]; //making array of c
    LoadGeneticCode("data.dat", c);
    return 0;
}

答案 1 :(得分:1)

.c文件中,尝试更改

void LoadGeneticCode(filename, c){

void LoadGeneticCode(char *filename, codon c[64]){

答案 2 :(得分:1)

您的函数调用main -

LoadGeneticCode('data.dat', c);       // string literals should be in double quotes

而是试试这个 -

LoadGeneticCode("data.dat", c);