1. *---------------------------------
  2. names1.c -- 使用指向结构的指针
  3. ---------------------------------*/
  4.  
  5. #include <stdio.h>
  6. #include <string.h>
  7.  
  8. #define NLEN 30
  9.  
  10. struct namect
  11. {
  12. char fname[NLEN];
  13. char lname[NLEN];
  14. int letters;
  15. };
  16.  
  17. void getinfo(struct namect *);
  18. void makeinfo(struct namect *);
  19. void showinfo(const struct namect *);
  20. char* s_gets(char *st, int n);
  21.  
  22. int main()
  23. {
  24. struct namect person;
  25.  
  26. getinfo(&person);
  27. makeinfo(&person);
  28. showinfo(&person);
  29.  
  30. return ;
  31. }
  32.  
  33. void getinfo(struct namect *pst)
  34. {
  35. printf("Please enter your first name.\n");
  36.  
  37. s_gets(pst->fname, NLEN);
  38.  
  39. printf("Please enter your last name.\n");
  40.  
  41. s_gets(pst->lname, NLEN);
  42. }
  43.  
  44. void makeinfo(struct namect *pst)
  45. {
  46. pst->letters = strlen(pst->fname) + strlen(pst->lname);
  47. }
  48.  
  49. void showinfo(const struct namect *pst)
  50. {
  51. printf("%s %s, your name contains %d letters.\n"
  52. , pst->fname, pst->lname, pst->letters);
  53. }
  54.  
  55. char* s_gets(char *st, int n)
  56. {
  57. char *ret_val;
  58. char *find;
  59.  
  60. if (ret_val = fgets(st, n, stdin))
  61. {
  62. if (find = strchr(st, '\n')) //查找换行符
  63. *find = '\0';
  64. else
  65. while (getchar() != '\n') continue; //处理输入行的剩余字符
  66. }
  67.  
  68. return ret_val;
  69. }

names1.c

  1. /*------------------------------
  2. names2.c -- 传递并返回结构
  3. ------------------------------*/
  4.  
  5. #include <stdio.h>
  6. #include <string.h>
  7.  
  8. #define NLEN 30
  9.  
  10. struct namect
  11. {
  12. char fname[NLEN];
  13. char lname[NLEN];
  14. int letters;
  15. };
  16.  
  17. struct namect getinfo(void);
  18. struct namect makeinfo(struct namect);
  19. void showinfo(struct namect);
  20. char* s_gets(char *st, int n);
  21.  
  22. int main()
  23. {
  24. struct namect person;
  25.  
  26. person = getinfo();
  27. person = makeinfo(person);
  28. showinfo(person);
  29.  
  30. return ;
  31. }
  32.  
  33. struct namect getinfo(void)
  34. {
  35. struct namect temp;
  36.  
  37. printf("Please enter your first name.\n");
  38.  
  39. s_gets(temp.fname, NLEN);
  40.  
  41. printf("Please enter your last name.\n");
  42.  
  43. s_gets(temp.lname, NLEN);
  44.  
  45. return temp;
  46. }
  47.  
  48. struct namect makeinfo(struct namect info)
  49. {
  50. info.letters = strlen(info.fname) + strlen(info.lname);
  51. return info;
  52. }
  53.  
  54. void showinfo(struct namect info)
  55. {
  56. printf("%s %s, your name contains %d letters.\n"
  57. , info.fname, info.lname, info.letters);
  58. }
  59.  
  60. char* s_gets(char *st, int n)
  61. {
  62. char *ret_val;
  63. char *find;
  64.  
  65. if (ret_val = fgets(st, n, stdin))
  66. {
  67. if (find = strchr(st, '\n')) //查找换行符,如果找到换行符,将换行符成空字符
  68. *find = '\0';
  69. else
  70. while (getchar() != '\n') continue; //处理输入行的剩余部分
  71. }
  72.  
  73. return ret_val;
  74. }

names2.c

第 14 章 结构和其他数据形式(names)的更多相关文章

  1. 第 14 章 结构和其他数据形式(伸缩型数组成员C99)

    伸缩型数组成员C99 声明一个伸缩型数组成员的规则: 1.伸缩型数组成员必须是结构的最后一个成员: 2.结构中必须至少有一个成员: 3.伸缩数组的方括号是空的. 示例 struct flex { in ...

  2. 第 14 章 结构和其他数据形式(enum枚举)

    /*----------------------------- enum.c -- 使用枚举类型的值 -----------------------------*/ #include <stdi ...

  3. 第 14 章 结构和其他数据形式(names3)

    /*----------------------------------- names3.c -- 使用指针和 malloc() ----------------------------------- ...

  4. 【机器学习实战】第14章 利用SVD简化数据

    第14章 利用SVD简化数据 SVD 概述 奇异值分解(SVD, Singular Value Decomposition): 提取信息的一种方法,可以把 SVD 看成是从噪声数据中抽取相关特征.从生 ...

  5. MySQL性能调优与架构设计——第 14 章 可扩展性设计之数据切分

    第 14 章 可扩展性设计之数据切分 前言 通过 MySQL Replication 功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我 ...

  6. 《how to design programs》14章 再论自引用数据

    这是一个家族谱: ;child(define-struct child (father mother name date eyes)) #lang racket ;child (define-stru ...

  7. C Primer Plus之结构和其他数据形式

    声明和初始化结构指针 声明结构化指针,例如: struct guy * him; 初始化结构指针(如果barney是一个guy类型的结构),例如: him = &barney; 注意:和数组不 ...

  8. C Primer Plus学习笔记(十三)- 结构和其他数据形式

    建立结构声明 结构声明(structure declaration)描述了一个结构的组织布局 struct book { char title[MAXTITL]; char author[MAXAUT ...

  9. 《机器学习实战》学习笔记——第14章 利用SVD简化数据

    一. SVD 1. 基本概念: (1)定义:提取信息的方法:奇异值分解Singular Value Decomposition(SVD) (2)优点:简化数据, 去除噪声,提高算法的结果 (3)缺点: ...

随机推荐

  1. k8s服务网关ambassador部署

    1.ambassador是datawire开源的服务网关,很好的支持kubernetes.具体详细介绍参考官网:https://www.getambassador.io/about/why-ambas ...

  2. rails中accepts_nested_attributes_for应用

    Model: class Blog < ActiveRecord::Base has_many :strip_rules accepts_nested_attributes_for :strip ...

  3. ASP.NET MVC加载用户控件后并获取其内控件值或赋值

    有网友看了这篇<ASP.NET MVC加载ASCX之后,并为之赋值>http://www.cnblogs.com/insus/p/3643254.html 之后,问及Insus.NET,不 ...

  4. karma + jasmine 构建前端自动化测试

    http://blog.fens.me/nodejs-karma-jasmine/   很全的文档 执行karma init时报错如下: $ karma init > readline.js:5 ...

  5. gulpjs

    http://www.cnblogs.com/2050/p/4198792.html   这篇文章很全面的讲解了gulpjs的使用 https://www.jianshu.com/p/9723ca2a ...

  6. Redis字符串操作

      字符串命令 (基本用法) GET : 获取给定键的值 SET : 设置给定键的值 DEL : 删除给定键的值(这个命令可以用于任何类型) (自增命令和自减命令) INCR : INCR key-n ...

  7. Direct2D教程I——简介及首个例子

    在博客园里,系统的Direct2D的教程比较少,只有“万一”写了一个关于Direct2D的系列(Delphi 2009).于是,仿照其系列,写一个在VS下的Direct2D系列教程. 博客园中的高手还 ...

  8. QYH练字

    汉字书写笔划,提取自百度汉语等网站... 以下凑字数: [发文说明]博客园是面向开发者的知识分享社区,不允许发布任何推广.广告.政治方面的内容.博客园首页(即网站首页)只能发布原创的.高质量的.能让读 ...

  9. [javaSE] 看知乎学习反射

    简单的来说,反射机制指的是程序在运行时能够获取自身的信息.在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息. 知乎:学习java应该如何理解反射?   余晖: 反射提供了一种运 ...

  10. Guava RateLimiter实现接口API限流

    一.简介 Guava提供的RateLimiter可以限制物理或逻辑资源的被访问速率.RateLimit二的原理类似与令牌桶,它主要由许可发出的速率来定义,如果没有额外的配置,许可证将按每秒许可证规定的 ...