ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

30.有趣的例子(输入电影名称,并打分)

2021-08-19 18:03:48  阅读:258  来源: 互联网

标签:title int 30 find char movies str 有趣 打分


/* filems1.c -- 使用一个结构数组 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define TSIZE 45 //定义存储电影名称数组的大小

//定义电影struct
struct film
{
    char title[TSIZE];
    int rating; 
};

char * s_gets(char str[], int lim);

int main(void)
{
  struct film * movies;
  int i = 0;
  int j;
  int n;
  puts("Enter the maximum number of movies you'll enter:");
  scanf("%d",&n);
  //n = 3;
  fpurge(stdin);//清除input stream
  movies = (struct film *) malloc(n * sizeof(struct film));
  puts("Enter first movie title:");
  //循环填下电影名称和评分
  while(i < n && 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;
      puts("Enter next movie title (empty line to stop):");
  }
  if (i == 0)
      printf("No data entered.");
  else
      printf("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("Bye!\n" );

  return 0;
}

char * s_gets(char str[], int lim)
{
    char * ret_val;
    char * find;

    ret_val = fgets(str,lim, stdin);

    if (ret_val)
    {
        find = strchr(str, '\n');
        if (find)
            *find = '\0';
        // else
        //     while (getchar() != '\n')
        //         continue;
    }
    return ret_val;
}

/*
这个案例的启示:
1.fgets 函数
  char *fgets(char *str, int n, FILE *stream)
  作用:将键盘输入存储的指定数组中
  返回值:char * = char *str;



*/

-- 非动态数组

/* filems1.c -- 使用一个结构数组 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define TSIZE 45 //定义存储电影名称数组的大小
#define FMAX  5  //定义存储电影的数量

//定义电影struct
struct film
{
    char title[TSIZE];
    int rating; 
};

char * s_gets(char str[], int lim);

int main(void)
{
  struct film 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;
      puts("Enter next movie title (empty line to stop):");
  }
  if (i == 0)
      printf("No data entered.");
  else
      printf("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("Bye!\n" );

  return 0;
}

char * s_gets(char str[], int lim)
{
    char * ret_val;
    char * find;

    ret_val = fgets(str,lim, stdin);
    if (ret_val)
    {
        find = strchr(str, '\n');
        printf("%p\n", find );
        if (find)
            *find = '\0';
        // else
        //     while (getchar() != '\n')
        //         continue;
    }
    return ret_val;
}

 

标签:title,int,30,find,char,movies,str,有趣,打分
来源: https://www.cnblogs.com/bajiaotai/p/15163045.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有