第 14 章 结构和其他数据形式(names)
- *---------------------------------
- names1.c -- 使用指向结构的指针
- ---------------------------------*/
- #include <stdio.h>
- #include <string.h>
- #define NLEN 30
- struct namect
- {
- char fname[NLEN];
- char lname[NLEN];
- int letters;
- };
- void getinfo(struct namect *);
- void makeinfo(struct namect *);
- void showinfo(const struct namect *);
- char* s_gets(char *st, int n);
- int main()
- {
- struct namect person;
- getinfo(&person);
- makeinfo(&person);
- showinfo(&person);
- return ;
- }
- void getinfo(struct namect *pst)
- {
- printf("Please enter your first name.\n");
- s_gets(pst->fname, NLEN);
- printf("Please enter your last name.\n");
- s_gets(pst->lname, NLEN);
- }
- void makeinfo(struct namect *pst)
- {
- pst->letters = strlen(pst->fname) + strlen(pst->lname);
- }
- void showinfo(const struct namect *pst)
- {
- printf("%s %s, your name contains %d letters.\n"
- , pst->fname, pst->lname, pst->letters);
- }
- char* s_gets(char *st, int n)
- {
- char *ret_val;
- char *find;
- if (ret_val = fgets(st, n, stdin))
- {
- if (find = strchr(st, '\n')) //查找换行符
- *find = '\0';
- else
- while (getchar() != '\n') continue; //处理输入行的剩余字符
- }
- return ret_val;
- }
names1.c
- /*------------------------------
- names2.c -- 传递并返回结构
- ------------------------------*/
- #include <stdio.h>
- #include <string.h>
- #define NLEN 30
- struct namect
- {
- char fname[NLEN];
- char lname[NLEN];
- int letters;
- };
- struct namect getinfo(void);
- struct namect makeinfo(struct namect);
- void showinfo(struct namect);
- char* s_gets(char *st, int n);
- int main()
- {
- struct namect person;
- person = getinfo();
- person = makeinfo(person);
- showinfo(person);
- return ;
- }
- struct namect getinfo(void)
- {
- struct namect temp;
- printf("Please enter your first name.\n");
- s_gets(temp.fname, NLEN);
- printf("Please enter your last name.\n");
- s_gets(temp.lname, NLEN);
- return temp;
- }
- struct namect makeinfo(struct namect info)
- {
- info.letters = strlen(info.fname) + strlen(info.lname);
- return info;
- }
- void showinfo(struct namect info)
- {
- printf("%s %s, your name contains %d letters.\n"
- , info.fname, info.lname, info.letters);
- }
- char* s_gets(char *st, int n)
- {
- char *ret_val;
- char *find;
- if (ret_val = fgets(st, n, stdin))
- {
- if (find = strchr(st, '\n')) //查找换行符,如果找到换行符,将换行符成空字符
- *find = '\0';
- else
- while (getchar() != '\n') continue; //处理输入行的剩余部分
- }
- return ret_val;
- }
names2.c
第 14 章 结构和其他数据形式(names)的更多相关文章
- 第 14 章 结构和其他数据形式(伸缩型数组成员C99)
伸缩型数组成员C99 声明一个伸缩型数组成员的规则: 1.伸缩型数组成员必须是结构的最后一个成员: 2.结构中必须至少有一个成员: 3.伸缩数组的方括号是空的. 示例 struct flex { in ...
- 第 14 章 结构和其他数据形式(enum枚举)
/*----------------------------- enum.c -- 使用枚举类型的值 -----------------------------*/ #include <stdi ...
- 第 14 章 结构和其他数据形式(names3)
/*----------------------------------- names3.c -- 使用指针和 malloc() ----------------------------------- ...
- 【机器学习实战】第14章 利用SVD简化数据
第14章 利用SVD简化数据 SVD 概述 奇异值分解(SVD, Singular Value Decomposition): 提取信息的一种方法,可以把 SVD 看成是从噪声数据中抽取相关特征.从生 ...
- MySQL性能调优与架构设计——第 14 章 可扩展性设计之数据切分
第 14 章 可扩展性设计之数据切分 前言 通过 MySQL Replication 功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我 ...
- 《how to design programs》14章 再论自引用数据
这是一个家族谱: ;child(define-struct child (father mother name date eyes)) #lang racket ;child (define-stru ...
- C Primer Plus之结构和其他数据形式
声明和初始化结构指针 声明结构化指针,例如: struct guy * him; 初始化结构指针(如果barney是一个guy类型的结构),例如: him = &barney; 注意:和数组不 ...
- C Primer Plus学习笔记(十三)- 结构和其他数据形式
建立结构声明 结构声明(structure declaration)描述了一个结构的组织布局 struct book { char title[MAXTITL]; char author[MAXAUT ...
- 《机器学习实战》学习笔记——第14章 利用SVD简化数据
一. SVD 1. 基本概念: (1)定义:提取信息的方法:奇异值分解Singular Value Decomposition(SVD) (2)优点:简化数据, 去除噪声,提高算法的结果 (3)缺点: ...
随机推荐
- k8s服务网关ambassador部署
1.ambassador是datawire开源的服务网关,很好的支持kubernetes.具体详细介绍参考官网:https://www.getambassador.io/about/why-ambas ...
- rails中accepts_nested_attributes_for应用
Model: class Blog < ActiveRecord::Base has_many :strip_rules accepts_nested_attributes_for :strip ...
- ASP.NET MVC加载用户控件后并获取其内控件值或赋值
有网友看了这篇<ASP.NET MVC加载ASCX之后,并为之赋值>http://www.cnblogs.com/insus/p/3643254.html 之后,问及Insus.NET,不 ...
- karma + jasmine 构建前端自动化测试
http://blog.fens.me/nodejs-karma-jasmine/ 很全的文档 执行karma init时报错如下: $ karma init > readline.js:5 ...
- gulpjs
http://www.cnblogs.com/2050/p/4198792.html 这篇文章很全面的讲解了gulpjs的使用 https://www.jianshu.com/p/9723ca2a ...
- Redis字符串操作
字符串命令 (基本用法) GET : 获取给定键的值 SET : 设置给定键的值 DEL : 删除给定键的值(这个命令可以用于任何类型) (自增命令和自减命令) INCR : INCR key-n ...
- Direct2D教程I——简介及首个例子
在博客园里,系统的Direct2D的教程比较少,只有“万一”写了一个关于Direct2D的系列(Delphi 2009).于是,仿照其系列,写一个在VS下的Direct2D系列教程. 博客园中的高手还 ...
- QYH练字
汉字书写笔划,提取自百度汉语等网站... 以下凑字数: [发文说明]博客园是面向开发者的知识分享社区,不允许发布任何推广.广告.政治方面的内容.博客园首页(即网站首页)只能发布原创的.高质量的.能让读 ...
- [javaSE] 看知乎学习反射
简单的来说,反射机制指的是程序在运行时能够获取自身的信息.在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息. 知乎:学习java应该如何理解反射? 余晖: 反射提供了一种运 ...
- Guava RateLimiter实现接口API限流
一.简介 Guava提供的RateLimiter可以限制物理或逻辑资源的被访问速率.RateLimit二的原理类似与令牌桶,它主要由许可发出的速率来定义,如果没有额外的配置,许可证将按每秒许可证规定的 ...