网络编程实验3-4---副本.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

根本函数应用

实验题目

内存与字符串操作函数

IP地址转换

试验要求:

录入以下实例程序,在活页纸上写出程序输出内容

理解程序含义并写出程序注释同时分析程序输出内容

实例

字符串copy:

图1-1

(1)运行结果:

图1-2

内存和字符串copy命令比拟:

运行结果:

运行结果分析:

程序第一行输出的结果是string1

因为在该程序的第8行执行了strcpy(a,b)语句,该语句的主要功能是将字符数组b的内容复制给字符数组a,但是由于字符数字b的字符串包含了’\0’,strpy函数遇到了’\0’默认结束拷贝。

在程序的第8行执行了printf(“strcpy():%s”,a);语句,所以程序的第一行输出的是string1

程序第二行输出的结果是:strcpy():string1a)

第2个printf函数双撇号””的内容原样输出。双撇号””中包含了’\n’是换行字符,主要是为了把上一行这该行之间起到换行作用。

第三个printf函数输出的是string1a)。

在程序的第8行执行了strcpy(a,b),此时数组a的内容就变成了string1\0a)。

程序的第11行执行了for循环语句,当变量i30时,循环结束。所以再执行printf(“%c”,a[i]);语句输出的结果就是string1a),\0表示空格符,在程序运行的结果时无法显示的空格符的。

程序第三行输出的结果是string1string。

由于该程序在第8行执行了strcpy(a,b),,所以数组a的内容就变成了string1\0a

程序的第13行执行了memcpy(a,b,30),其主要作用是复制字符数组b的前30个元素给字符数组a,包括’\0’,所以数组a的内容由string1\0a)变成了string1\0string。

第四个printf的作用是输出提示信息并换行,在屏幕终端换行输出memcpy();.

程序的第15行执行了for循环语句,作用是通过执行第五个printf(“%c”,a[i]);语句,将复制后的数组a的元素在屏幕终端显示。

执行第五个printf(“%c”,a[i]);语句之后,屏幕终端就会输出string1string

3.IP地址转换:

运行结果:

程序分析

#includestdio.h//*当要调用某个函数时先在用户自已编写的文件中查找,如果找不到再到库文件里去找.当要调用某个函数时先在用户自已编写的文件中查找,如果找不到再到库文件里去找.

#includenetinet/in.h//*互联网地址族的意思,如果要使用inet_network()/inet_addr()等库函数,就要使用该头文件。

#includearpa/inet.h//*将点分十进制数

#inclduestring.h//*string.h是一个和字符串处理相关的头文件

intmain(intargc,char*argy[])//*argy[]是外部参数,argy[]存放参数内容

strcutin_addraddr1,addr2;//*定义两个网络顺序的结构体addr1,addr2

unsignedlongl1,l2;//*定义两个长整型变量l1,l2

char*p1,*p2;//*定义两个指针*p1,*p2用来指向IP地址所在的地址

inti;//*定义变量i

l1=inet_addr(“”);//*将Ip地址“”转换成点分十进制并且赋值给l1

l2=inet_addr(“”);//*将Ip地址“”转换成点分十进制并且赋值给l2

printf(“%u\n”,l1);//*将变量l1的值以无符号的形式输出并换行

for(i=0;i4;i++)

{

printf(“%02x”,*((unsignedchar*)(11)+i));

//*“02x”是以十六进制输出,02表示缺乏两位以空格不齐,如果超出两位不影响的结果。

}

printf(“\n”);//*换行

printf(“%u\n”,l2);//*将变量l2的值以无符号的形式输出并换行

for(i=0;i4;i++)

{

printf(“%02x”,*((unsignedchar*)(12)+i));

}

printf(“\n”);

memcpy(addr1,l1,4);//*从源l1所指的内存地址的起始位置开始拷贝4个字节到目标addr1所指的内存地址的起始位置中

memcpy(addr2,l2,4);//*从源l2所指的内存地址的起始位置开始拷贝4个字节到目标addr1所指的内存地址的起始位置中

printf(“%s\n”,inet_ntoa(addr1));//

文档评论(0)

寒傲似冰 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8071104010000026

1亿VIP精品文档

相关文档