У меня есть структура указателей и глобальный указатель для использования в функциях, объявленных после main.Теперь можно объявить функции с теми же именами указателей.Но когда я вызываю ее в другой функции (потому что она похожа на программу типа меню), я продолжаю получать разные типы ошибок. Например, требуется выражение, неожиданный тип и т. Д. У меня вопрос просто, как мне вызвать параметры для функцииработать.Я не использовал C годами, поэтому решение может показаться проще, чем кажется.Код ниже покажет вам, что я имею в виду.
StudentPtr studentArt StudentPtr ** studentArray struct StudentPtr * studentArray * StudentPtr studentArray [] (в значительной степени перемещает указатели и использует struct в качестве префикса)
typedef struct Student {
char *firstName;
char *lastName;
char *id;
char *email;
} Student, *StudentPtr;
//Prototypes:
int fillData(StudentPtr studentArray,char* f, char* l, char* id, char* e,int n);
int displayData(StudentPtr studentArray, int n);
int displayDataAll(StudentPtr studentArray);
int main()
{
return 0;
}
int command(char line[])
{
//other code here
//some more code..
//......
//error below
if(lineSize==0) /* If the command is empty, asks again for a command */
{
return 0;
}
else
{
if(strncmp(line,"1",lineSize)==0)
{reset();}
else if(strncmp(line,"2",lineSize)==0)
{fillData(StudentPtr studentArray,char* f, char* l, char* id, char* e,int n);} //the first parameter here
else if (strncmp(line,"3",lineSize)==0)
{modify(StudentPtr studentArray,char* f, char* l, char* id, char* e,int n);} //here as well
else if(strncmp(line,"4",lineSize)==0)
{displayDataAll(StudentPtr studentArray);} //here too
else if(strncmp(line,"5",lineSize)==0)
{return 1;}
else
{noComm();}
}
return 0;
}
//example of the functions supposed to be used
int fillData(StudentPtr studentArray,char* f, char* l, char* id, char* e,int n)
{
//get the start of the nth record
//Ptr arithmetic
StudentPtr currentStudentptr = studentArray+(n-1);
//allocate memory for the character pointers
currentStudentptr->firstName =malloc(sizeof(char)*20);
strcpy(currentStudentptr->firstName,f);
//... same for others
return 0;
}
Вызов функции здесь должен правильно вызывать функции, которые находятся ниже.