ورود

View Full Version : تغییر در برنامه با struct



jaber_pishdar
جمعه 19 بهمن 1386, 00:16 صبح
من میخوم برنامه زیر رو با ساختار struct بنویسم کسی میتونه منو راهنمایی کنه ؟؟



# include <stdio.h>
# include <stdlib.h>
# include <io.h>
main()
{
int a;
a=menu();
if (a==1)
Save();
if (a==2)
load();
if (a==3)
search();
if (a==4)
exit(1);
return 1;
}
int menu()
{
int a;
clrscr();
printf("\n\n\n\n\n\n\n\n\t\t\t\t Menu");
printf("\n\t\t\t***************************************\n");
printf("\t\t\t* 1. Add New Name *\n ");
printf("\t\t\t* 2. load Data *\n ");
printf("\t\t\t* 3. Search By ST.NUM *\n ");
printf("\t\t\t* 4. Exit Program *\n ");
printf("\t\t\t***************************************\n");
printf("\n\t\t\t Enter a Number (1 to 4): ");
scanf("%d", &a);
if ((a<5)&&(a>0))
return a ;
main();
return 0;
}
Save()
{
char name[20], sex[4], stno[10];
//int stno ;
float score ;
FILE *myfile;
clrscr();
if ((myfile=fopen("student.dat","a+t"))==NULL)
{
printf("can not open file \n");
exit(1);
}
printf("\n\t-----enter name student: ");
scanf("%s",&name);
strcat(name,"\n");
printf("\n\t-----enter sex: ");
scanf("%s",&sex);
strcat(sex,"\n");
printf("\n\t----Enter student number: ");
scanf("%s",&stno);
strcat(stno,"\n");
printf("\n\t----Enter score: ");
scanf("%f",&score );
fprintf(myfile,"%s%s%s%f\n",name,stno,sex,score);
if (ferror(myfile))
printf("\n Error on input file ");
fclose(myfile);
main();
return 0;
}
load()
{
char name[20], sex[4], stno[10];
int n;
float score;
FILE *myfile;
clrscr();
if ((myfile=fopen("student.dat","r"))== NULL)
{
printf("can not open file \n");
exit (1);
}
fscanf(myfile,"%s%s%s%f", &name, &stno, &sex, &score );
if(ferror(myfile))
printf("\n Error on input file");
n=0;
while (!feof(myfile))
{
if (n>19)
{
getch();
n=0;
}
if (n==0)
{
clrscr();
printf(" name stno score sex");
printf(" \n ======================================= \n");
}
++n;
printf("%d : %s %s %f %s\n",n, name,stno, score, sex);
fscanf(myfile,"%s%s%s%f", &name, &stno, &sex, &score );
if ( ferror(myfile))
printf("\n Error on input file");
}
fclose (myfile );
getch();
main();
return 1;
}
search ()
{
char name[20], sex[4], stno[10], ID[10];
// int ID;
float score ;
FILE *myfile ;
clrscr();
if ((myfile=fopen("student.dat","r"))==NULL)
{
printf("can not open file \n");
exit(1);
}
printf ("\n\tEnter your student number for search: ");
scanf("%s",&ID);
fscanf(myfile,"%s%s%s%f",&name, &stno, &sex, &score);
if(ferror(myfile))
printf("\n Error on input file");
while (!feof(myfile))
{
if(! strcmp(ID,stno))
{
printf("\n\t\t-------This is your student--------\n\n");
printf("\n\t\t\t St_Id= %s ",stno );
printf("\n\t\t\t name = %s ",name);
printf("\n\t\t\t score= %f ",score);
printf("\n\t\t\t sex = %s ",sex);
break;
}
fscanf(myfile,"%s%s%s%f",&name, &stno, &sex, &score);
if(ferror(myfile))
printf("\n Error on input file");
}
if(feof(myfile))
{
printf("\n\n\n\t\t****************** Sorry **********************\n\n");
printf("\t\t\t This student is not available");
}
fclose(myfile);
getch();
main();
return 1;

}

MRHagh
جمعه 19 بهمن 1386, 12:46 عصر
این برنامه کار میکنه ؟!!! یا برای شوخی فرستادی ؟!

emad_67
جمعه 19 بهمن 1386, 20:46 عصر
این برنامت کلی syntax ارور داره.
برای اینکه با struct بنویسی هم به این شکل بنویس:


struct student
{
char name[20], sex[4], stno[10];
};

بعد هم یه متغیر از struct بساز:


student st;

و بعد ه مقدار دهی کن و ...