*---------------------------------
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)的更多相关文章

  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. Hibernate常出现的报错

    刚开始学习hibernate的时候,第一次就遇到了空指针异常,结果是我的配置文件处理错误(主要是数据库表的字段与就java实体类的属性名单词写错了):一般是报空指针异常的话,多半是配置文件的问题. 但 ...

  2. openerp7 时区问题解决--改成本地时区

    由于目前openerp的时区,读取的是UTC时间,而我国本地时间比UTC快8小时 问题就导致,写入数据库的时候时间相差8小时,以及Openerp日志输出时间格式也相差8小时和前端显示问题 1.更改op ...

  3. (转)mybatis热加载(依赖mybatis-plus插件)的实现

    最近在使用mybatis,由于是刚刚开始用,用的并不顺手,目前是感觉有2个地方非常的不好用: 1.mybatis调试不方便 由于dao层只有接口,实现只是一个map的xml文件,想加断点都没有地方加, ...

  4. 一篇你看了就懂的DNS详解

    DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住IP. 通过域名,最终得到该域名对应的IP地址 ...

  5. maven3.6.1-02初体验及jar包上传

    安装当前最新版本的nexus,安装教程网上搜,不多说了. 因为nexus3x版本没有2x版本中内置的3rd_part,所以不能在界面中上传jar包,必须使用maven的命令行.  添加第三方仓库,名字 ...

  6. .5-浅析express源码之Router模块(1)-默认中间件

    模块application已经完结,开始讲Router路由部分. 切入口仍然在application模块中,方法就是那个随处可见的lazyrouter. 基本上除了初始化init方法,其余的app.u ...

  7. MVC会员注销功能Cookie的应用

    我们实现了<MVC应用程序实现会员登录功能>http://www.cnblogs.com/insus/p/3466512.html 有登录就会有注销功能.此次Insus.NET练习一个MV ...

  8. C#经典面试题100道

    . .NET和C#有什么区别 答:.NET一般指 .NET FrameWork框架,它是一种平台,一种技术. C#是一种编程语言,可以基于.NET平台的应用. .一列数的规则如下: ......... ...

  9. JS DOM操作(一) 对页面的操作

    DOM ——文档对象模型(Document Object Model)是表示和处理一个HTML或XML文档的常用方法. 在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标 ...

  10. mybatis将传入0识别成空字符串

    mybatis将传入的Integer类型的0被识别成空字符串,网上的解决办法: <if test="status != null and status != '' or status ...