#include<stdio.h>#include<string.h>#defineTSIZE45#defineFMAX5structfilm{char title[TSIZE];int rating ;};//数据组织形式 char*s_gets(char str[],int lim);char*s_gets(char* st ,int n ){char* ret_val ;char* find;
ret_val =fgets(st, n,stdin);// 从缓冲区读取45个数据道st中 if(ret_val){
find =strchr(st,'\n');//从st中寻找换行符并且返回它的位置。 if(find)//find是一个地址 *find ='\0';elsewhile(getchar()!='\n')//去掉回车然后继续输入。 continue;}return ret_val;}// \0表示输入数据的结尾,\n表示第二行的开头 intmain(){structfilm movies[FMAX];//实例化一个结构体。 int i =0;int j ;puts("Enter first movie title:");while(i < FMAX &&s_gets(movies[i].title,TSIZE)!=NULL&& movies[i].title[0]!='\0'){puts("Enter your rating <0-10>");scanf("%d",&movies[i++].rating);while(getchar()!='\n')//当按下回车键时会产生一个换行符,不等于换行符时才继续输入 continue;printf("Enter next movie title (empty line to stop)");}if(i ==0)printf("No data entered.");elseprintf("Here is the movie list :\n");for(j =0;j < i ;j++)printf("Movie : %s Rating :%d \n",movies[j].title,movies[j].rating);printf("Done!");return0;}