实例32:

  编制一个包含姓名、地址、邮编和电话的通讯录输入和输出函数。

思路解析:

  1、用结构体来完成姓名、地址、邮编和电话的组合。

  2、结构体指针的使用。

  3、malloc的使用

  4、scanf函数的返回值是正确输入的变量个数

程序代码如下:

 #include <stdio.h>
#include <stdlib.h>
#include <string.h> #define ZIPLEN 10
#define PHONLEN 15 struct stu
{
char *name; //姓名
char *address; //地址
char zip[ZIPLEN]; //邮政编码
char phone[PHONLEN]; //电话号码
}; int readstu(struct stu *dpt); /* 函数readstu用于输入一个通信录函数 */
int writestu(struct stu *dpt); /* 函数writestu用于输出通讯录 */ int main()
{
struct stu p[]; /*示例用,只有两个元素的数组*/
int i,j;
for(i=; i<;i++)readstu(p+i);
for(j=; j<i; j++)
writestu(p+j);
puts("\n Press any key to quit...");
return ;
} int readstu(struct stu *dpt)
{
int len;
char buf[]; printf("\nPlease input the Name:\n");
if(scanf("%s",buf) == )
{
len = strlen(buf);
dpt->name = (char *)malloc(len+);
strcpy(dpt->name,buf);
}
else
return ;
printf("Please input the Address:\n");
if(scanf("%s",buf) == )
{
len = strlen(buf);
dpt->address = (char *)malloc(len+);
strcpy(dpt->address, buf);
}
else
{
free(dpt->name);
return ;
}
printf("Please input the Zip code:\n");
if(scanf("%s",buf) == )
strncpy(dpt->zip,buf,ZIPLEN-);
else
{
free(dpt->name);
free(dpt->address);
return ;
}
printf("Please input the Phone number:\n");/*输入电话号码*/
if(scanf("%s",buf)==)
strncpy(dpt->phone,buf,PHONLEN-);
else
{
free(dpt->name);
free(dpt->address);
return ;/*Ctrl+Z结束输入*/
}
return ;
} int writestu(struct stu *dpt)
{
printf("Name : %s\n", dpt->name);
printf("Address : %s\n", dpt->address);
printf("Zip : %s\n", dpt->zip);
printf("Phone : %s\n\n",dpt->phone);
}

C语言实例解析精粹学习笔记——32的更多相关文章

  1. C语言实例解析精粹学习笔记——18

    <C语言实例解析精粹>中编译环境采用的是Turbo C 2.0.但是这个编译器年代久远,较新的编译器对书中的某些例子支持不好,在学习的时候同时做一些笔记. 实例18:将一个无符号整数转换为 ...

  2. C语言实例解析精粹学习笔记——35(报数游戏)

    实例35: 设由n个人站成一圈,分别被编号1,2,3,4,……,n.第一个人从1开始报数,每报数位m的人被从圈中推测,其后的人再次从1开始报数,重复上述过程,直至所有人都从圈中退出. 实例解析: 用链 ...

  3. C语言实例解析精粹学习笔记——42(插入排序)

    实例说明: 将一个整数数组按从小到大的顺序进行排序.(主要学习基本的插入排序和改进的冒泡排序的算法和应用) 思路1: 从第一个数据开始,分别比较其后的数据,若比它小,则将这两个数的位置交换:从第一个数 ...

  4. C语言实例解析精粹学习笔记——36(模拟社会关系)

    实例: 设计一个模拟社会关系的数据结构,每个人的信息用结构表示,包含名字.性别和指向父亲.母亲.配偶.子女的指针(只限两个子女).要求编写以下函数: (1)增加一个新人的函数 (2)建立人与人之间关系 ...

  5. C语言实例解析精粹学习笔记——34(用“结构”统计学生成绩)

    实例34: 设学生信息包括学号.姓名和五门功课的成绩,要求编写输入输出学生信息的函数.在输入学生信息后,以学生成绩的总分从高到低顺序输出学生信息. 思路: 程序引入一个结构数组依次存储输入的学生信息, ...

  6. C语言实例解析精粹学习笔记——31

    实例31: 判断字符串是否是回文 思路解析: 引入两个指针变量(head和tail),开始时,两指针分别指向字符串的首末字符,当两指针所指字符相等时,两指针分别向后和向前移动一个字符位置,并继续比较, ...

  7. C语言实例解析精粹学习笔记——30

    实例30: 用已知字符串s中的字符,生成由其中n个字符组成的所有字符排列.设n小于字符串s的字符个数,其中s中的字符在每个排列中最多出现一次.例如,对于s[]="abc",n=2, ...

  8. C语言实例解析精粹学习笔记——28

    实例28:从键盘读入实数 题目要求: 编制一个从键盘读入实数的函数readreal(double *rp).函数将读入的实数字符列转换成实数后,利用指针参数rp,将实数存于指针所指向的变量*rp. 思 ...

  9. C语言实例解析精粹学习笔记——19

    实例19:判断正整数n的d进制表示形式是否是回文数(顺着看和倒着看相同的数). 主要思路: 一种方法:将正整数n数转换成d进制的数,逐个比较首尾对应数字,判断是否为回文数. 另一种方法:将正整数n数转 ...

随机推荐

  1. 【Leetcode】【Medium】Single Number

    Given an array of integers, every element appears twice except for one. Find that single one. Note:Y ...

  2. [图]Windows 10 Build 16273版本更新发布:新增可变式字体Bahnschrift

    在经历了长达三周的等待之后,微软于今天终于面向Windows Insider项目的Fast通道用户发布了Windows 10 Build 16273版本更新.事实上,微软应该会在两周前就应该发布新版本 ...

  3. HCNA配置静态LACP模式链路聚合

    1.静态LACP模式 静态LACP模式是一种利用LACP协议进行聚合参数协商.确定活动接口和非活动接口的链路聚合方式.该模式下,需手工创建Eth-Trunk,手工加入Eth-Trunk成员接口,由LA ...

  4. Do the Untwist

      Do the Untwist Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. Oracle权限相关查询

    Oracle权限相关查询着实视图有点多,记录下常用的语句,方便查询:1.查看所有用户:  select * from dba_users;  select * from all_users;  sel ...

  6. React中最基础的jsx语法

    import React, { Component } from 'react'; class App extends Component { render() { return ( <div ...

  7. luogu P3787 冰精冻西瓜

    嘟嘟嘟 好题,好题…… 看这个修改和询问,就知道要么是求完dfs序后线段树维护,要么是树剖.又因为这道题都是子树的操作,没有链上的,所以线段树就够了. 然而重点不是这个.这道题最麻烦的是线段树push ...

  8. 【转】Js中Prototype、__proto__、Constructor、Object、Function关系介绍

    一    Prototype.__proto__与Object.Function关系介绍        Function.Object:Js自带的函数对象.         prototype,每一个 ...

  9. Android学习笔记_64_手机安全卫士知识点归纳(4) 流量统计 Log管理 混淆打包 加入广告 自动化测试 bug管理

    android 其实就是linux 上面包装了一个java的框架. linux 系统下 所有的硬件,设备(网卡,显卡等) 都是以文件的方式来表示. 文件里面包含的有很多设备的状态信息. 所有的流量相关 ...

  10. python序列化_json,pickle,shelve模块

    序列化 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes 把内存数据 转成字符,叫序列化 把字符 转成内存数据,叫反序列化 模块 ...