Я получаю «ожидаемый инициализатор до« read_file »как ошибку. Ошибка находится в строке« код команды [] read_file (код команды []) ». Его строка В поисках веб-страницы для справки, все im нахождение - это связанный с C++ пост, поэтому, чтобы это объяснить, для C.Ожидаемый инициализатор перед именем функции в заголовке. C
Я попытался перемещаться по позициям протип функций. Я написал ту же самую программу ранее, что реализовал связанный список вместо массива, и у меня не было ошибок , так что я имею в виду, что, возможно, что-то делать с массивом структуры.
Спасибо за помощь.
#include<stdio.h>
#include <stdlib.h>
typedef struct instruction{
int op; //opcode
int l; // L
int m; // M
} instr;
FILE * ifp; //input file pointer
FILE * ofp; //output file pointer
instruction code[501];
instruction code[] read_file(instruction code[]);
char* lookup_OP(int OP);
void print_program(instruction code[]);
void print_input_list(instruction code[]);
int main(){
code = read_file(code);
print_input_list(code);//used for debugging
print_program(code);
}
instruction code[] read_file(instruction code[]){
int i = 0;
ifp = fopen("input.txt", "r");
while(!feof(ifp)){
fscanf(ifp,"%d%d%d",&code[i]->op, &code[i]->l, &code[i]->m);
i++;
}
code[i]->op = -1; //identifies the end of the code in the array
fclose(ifp);
return code;
}
'код команды [] read_file (код команды [])' ?? –
Вероятно, вам понадобится 'инструкция * read_file (код команды []) {...}'. Вы не можете вернуть массив из функции; вы можете вернуть указатели. –
Вы скомпилировали это как C или C++? Он должен жаловаться на использование «инструкции» без сопроводительного ключевого слова «struct». Ваше имя typdef - 'instr', а не' инструкция'. Кроме того, не используйте 'feof' как условие цикла; он не вернется в исходное состояние до тех пор, пока вы не попытаетесь прочитать за ним конец файла, так что вы будете слишком часто выполняться. Вместо этого используйте возвращаемое значение 'fscanf' как условие цикла. –