Если вы еще не изучили функции, вам следует прочитать о них немного.Я не знаю, что именно вы пытаетесь сделать, потому что вы не используете chasher снова, так как код сейчас, я не знаю, нужно ли вам их хранить (но я предполагаю, что вы действительно хотите сохранитьих).
В этом случае, без необходимости помещать кэширование в массив, вы можете создать функцию, которая принимает кэширование в качестве аргумента,
#include <stdio.h>
struct employee{
char ID[6];
char name[20];
char address[50];
long salary;
long T;
}casher1,casher2;
int casherFunction(struct employee *casher);
int main(int argc, char const *argv[]) {
int ch;
printf("Choose : ");
scanf("%d",&ch );
if( 1 == ch ){
casherFunction(&casher1);
}else if( 2 == ch ){
casherFunction(&casher2);
}
return 0;
}
int casherFunction(struct employee *casher){
printf("Input Name : " );
scanf("%s",casher->name );
printf("Input ID : " );
scanf("%s",casher->ID );
printf("Input Salary : " );
scanf("%ld",&casher->salary);
printf("Input T : " );
scanf("%ld",&casher->T );
printf("\n");
casher->salary = casher->salary + casher->T;
printf("ID : %s\n",casher->ID );
printf("Name : %s\n",casher->name );
printf("Salary : %ld\n",casher->salary );
return 0;
}
Итак, сначала вы объявляетефункция:
int casherFunction(struct employee *casher);
и затем после основного вы определяете его:
int casherFunction(struct employee *casher){
printf("Input Name : " );
scanf("%s",casher->name );
printf("Input ID : " );
scanf("%s",casher->ID );
printf("Input Salary : " );
scanf("%ld",&casher->salary);
printf("Input T : " );
scanf("%ld",&casher->T );
printf("\n");
casher->salary = casher->salary + casher->T;
printf("ID : %s\n",casher->ID );
printf("Name : %s\n",casher->name );
printf("Salary : %ld\n",casher->salary );
return 0;
}
возвращаемое значение 0 является стандартным возвращаемым значением, если ошибок нет.
Примечаниетакже, что функция ожидает указатель casherFunction(struct employee *casher)
, поэтому при вызове функции мы пишем: casherFunction(&casher1)
с &
.
Кроме того, элементы в указателе структуры находятся под casher->ID
вместоcasher.ID
.
Опять же, это полезно, если вы хотите, чтобы изменения были записаны в кэше.затем, например, вы можете создать функцию для просмотра кэша (в этом случае вам не нужно передавать указатель, достаточно просто скопировать структуру).
Код будет:
#include <stdio.h>
struct employee{
char ID[6];
char name[20];
char address[50];
long salary;
long T;
}casher1,casher2;
int casherFunction(struct employee *casher);
int casherShow(struct employee casher);
int main(int argc, char const *argv[]) {
int ch;
printf("Choose : ");
scanf("%d",&ch );
if( 1 == ch ){
casherFunction(&casher1);
}else if( 2 == ch ){
casherFunction(&casher2);
}
printf("%ld\n\n",casher1.salary);
casherShow(casher1);
return 0;
}
int casherFunction(struct employee *casher){
printf("Input Name : " );
scanf("%s",casher->name );
printf("Input ID : " );
scanf("%s",casher->ID );
printf("Input Salary : " );
scanf("%ld",&casher->salary);
printf("Input T : " );
scanf("%ld",&casher->T );
printf("\n");
casher->salary = casher->salary + casher->T;
printf("ID : %s\n",casher->ID );
printf("Name : %s\n",casher->name );
printf("Salary : %ld\n",casher->salary );
return 0;
}
int casherShow(struct employee casher){
printf("Name: ");
printf("%s\n",casher.name );
printf("Input ID : " );
printf("%s\n",casher.ID );
printf("Salary : " );
printf("%ld\n",casher.salary);
return 0;
}