ACK
ACK内网规范管理解决方案实名制准入控制硬件

动态划分安全域 多元绑定 IPAM监测 IP地址使用统计 非法IP阻塞
功能四、访客管理
用户规范管理 终端规范管理 网络规范管理
访客网与办公网隔离 利用现有网络,不改变网络配置 访客入网无物理限制 访客入网需员工授权 访客权限控制 访客入网审计
内网混乱的本质原因
一切安全风险皆来自于人带 来的威胁;
利用内网先天安全性不足;
现有安全技术多为被动防御 技术;
管理手段较为单一;
物理层 威胁
法规遵从意识不足;
网络层 威胁
人的 威胁
终端层 威胁
应用层 威胁
内网需要规范管理
内网安全 先管人
ACK内网规范管理 解决方案
ACK内网规范管理架构
终端认证 设备分类识别 强制插件安装 强制安全隔离
功能二、终端健康检查
用户规范管理 终端规范管理 网络规范管理
终端认证 设备分类识别 强制插件安装 强制安全隔离 终端合规性检查 安全修复向导 免插件软件识别
功能二、终端健康检查
用户规范管理 终端规范管理 网络规范管理
终端认证 设备分类识别 强制插件安装 强制安全隔离 终端合规性检查 安全修复向导 免插件软件识别
大型分支机构 IDNAC
Internet
专 线
V P N
小型分支机构 IDSensor
Firewall
IDWall
Trunk
TrunkAC HA-备 安
全
全
边
Cisco/802.1x H3C/802.1x Dlink Sw
HUB
界
边 界
功能一、实名制准入控制
用户规范管理 终端规范管理 网络规范管理
ACK

转义字符DLE( Data Link Escape)用于改变紧随其后的有限个字符的意义,以提供附加的数据链路控制字 符。
应用
图1:三次握手图ACK在三次握手中用到,三次握手的过程(如图1:三次握手图)所示。 第一次 第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认; SYN:同步序列编号(Synchronize Sequence Numbers)。 第二次 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(seq=k), 即SYN+ACK包,此时服务器进入SYN_RECV状态。 第三次 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户 端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据。
简介
ACK的全称为Acknowledge character,即确认字符,表示接收到的字符无错误。 接收站对所收到的报文进行检查,若未发现错误,便向发送站发出确认回答ACK,表明信息已被正确接收, 并准备好接收下一份报文。该控制字符可由中心结点发送,也可由远地结点发送。 其格式取决于采取的络协议。当发送方接收到ACK信号时,就可以发送下一个数据。如果发送方没有收到信 号,那么发送方可能会重发当前的数据包,也可能停止传送数பைடு நூலகம்。具体情况取决于所采用的络协议。 1、TCP报文格式中的控制位由6个标志比特构成,其中一个就是ACK,ACK为1表示确认号有效,为0表示报文 中不包含确认信息,忽略确认号字段。 2、ACK也可用于AT24cxx这一系列的EEPROM中。 3、在USB传输中,ACK事务包用来向主机/设备报告包正确的传输。
ACK的名词解释

ACK的名词解释ACK是英文Acknowledgment的缩写,意为“确认”或“回复”。
它在计算机科学领域被广泛应用,尤其在网络通信中起着重要的作用。
ACK是一个特殊的数据包,用于确认接收到的数据包的正常传输并回复发送端。
1. ACK的作用在计算机网络通信中,ACK起到了确保数据可靠传输的关键作用。
当发送端将数据包发送到接收端时,接收端会在成功接收数据包后,向发送端发送一个ACK数据包,作为对收到数据包的确认。
发送端在收到ACK数据包后,才会继续发送下一个数据包。
如果发送端在一定时间内没有收到ACK数据包,就会认为数据包丢失或出现错误,并重传数据包,以确保数据的完整性和正确性。
2. ACK的工作原理ACK的工作原理涉及到一种称为“确认-应答”的通信机制。
当发送端发送数据包时,它会等待接收端返回ACK数据包,以确认数据包已成功到达。
如果一段时间内没有收到ACK数据包,发送端会重新发送数据包,以确保数据的正常传输。
当接收端收到数据包后,它会检查数据包的校验和,如果校验和正确,则发送ACK数据包回复给发送端,表示接收成功;如果校验和错误,则不发送ACK数据包,以表示数据包的接收出现问题。
3. ACK的应用场景ACK广泛应用于网络通信的各个领域,特别是在TCP/IP协议中。
在TCP/IP协议中,ACK作为确认数据包接收的一种方式,保证了数据的可靠性。
当用户通过浏览器访问网页时,发送的请求数据包会收到服务器的ACK确认。
当用户从服务器下载文件时,发送的数据包也会收到ACK确认,确保文件的完整传输。
在电子邮件的发送和接收过程中,ACK也起着关键作用,确保发送方和接收方之间的信息同步。
4. ACK与NACK的区别除了ACK,还有一种相关的概念叫做NACK,它是Negative Acknowledgment的缩写,意为“否认确认”。
NACK通常用来表示接收方在接收数据包时发现错误,无法接受数据包。
与ACK不同,NACK不是用于确认数据包的正常传输,而是用于指示出错数据包的存在。
ACK内网规范管理解决方案实名制准入控制硬件

ACK创新产品系列
Secured by Innovation
ACK内网规范管理解决方案实名制准入
北京艾控科制网硬件信科技有限公司
创新更安全
ACK的十大特色功能
Secured by Innovation
…
简
化
网络运维管理
管
全网日志储存
理
高可用性
网络访问控制
…
网络边界监护
难
网络威胁定位
于
访客管理
管
IP地址管理
ACK内网规范管理解决方案实名制准入
北京艾控科制网硬件信科技有限公司
创新更安全
内网混乱
安全威胁多
病毒、木马层出不穷 内网DDOS攻击 系统补丁不全—漏洞攻击 无线安全隐患 智能终端、移动设备的安全问题 员工绕过防火墙访问
管理难题多
任何人和终端均可进入网络; IP使用失控,私改IP现象严重; 员工私自安装软件、开启危险服
`
Computer1:MAC1
用户认证
UUsseerr22
1199022.1..11666888.1..11.2..22
Computer2:MAC2
MUsAMeCrA11C:1:1199:212.01.1.616868.81.1.1.1.1 MUsAMeCrA22C:1:1299:212.01.1.616868.81.1.12.2.2 MUsAMeCrA33C:1:1399:212.01.1.616868.81.1.13.3.3
Secured by Innovation
ACK成功案例
ACK内网规范管理解决方案实名制准入
北京艾控科制网硬件信科技有限公司
创新更安全
案例汇总
kafka 消费者ack机制

Kafka消费者Ack机制一、Kafka消费者Ack机制的概述Kafka是一种分布式流式处理评台,其中的消息消费者采用了一种名为Ack机制的方式来确认消息的处理情况。
Ack机制被用于确保消息在被消费者成功处理后才被认定为已被成功消费,以保证消息的完整性和可靠性。
二、Kafka消费者Ack机制的原理1. 普通消费模式在普通消费模式下,Kafka消费者收到消息后会立即向服务器发送确认消息的请求,表明该消息已被成功接收。
一旦服务器收到确认消息,便会将该消息标记为已被消费,然后在下一次清理磁盘时将其删除。
这种模式下的消费者速度较快,但在消息处理失败时可能会导致消息的丢失。
2. 提高可靠性的消费模式为了提高消息处理的可靠性,Kafka引入了一种更为可靠的消费模式。
在此模式下,消费者会在成功处理消息后才发送确认请求,这样可以确保消息已被消费者正确处理。
如果消费者在一段时间内未发送确认消息,Kafka会将该消息重新发送给其他消费者进行处理,以确保消息不会因个别消费者的失败而丢失。
三、Kafka消费者Ack机制的应用1. 设置确认方式Kafka提供了三种不同的确认方式,分别为自动确认、手动确认和异步确认。
用户可以根据自己的业务需求和处理速度来选择合适的确认方式。
自动确认方式下,Kafka消费者会在接收到消息后立即进行确认,而手动确认和异步确认方式则允许消费者自行选择何时发送确认请求。
2. 确认超时时间为了避免消息长时间未被确认而导致的重复消费问题,Kafka引入了确认超时时间的设定。
在不同的业务场景下,可以根据消息的处理时长和消费者的处理速度来设置确认超时时间,以避免消息重复消费的问题。
3. 消费者组与消费者位置的处理Kafka支持使用消费者组的方式来实现消息的负载均衡和故障转移。
消费者组中的消费者会随机分配不同的消息分区来进行处理,以提高消息的处理速度和可靠性。
消费者的位置信息也会被实时记录,以便故障发生时能够及时转移消息处理的角色。
ack的发音规则

ack的发音规则摘要:一、引言二、ack的发音规则1.概述2.具体规则三、实际应用1.单词举例2.注意事项四、总结正文:【引言】在英语学习中,掌握发音规则对于准确发音和记忆单词具有重要意义。
本文将详细介绍ack的发音规则,帮助大家更好地理解和应用这一规则。
【ack的发音规则】【概述】在英语中,字母组合ack通常发/k/的音。
这一发音规则适用于许多单词,尤其是以-ack、-ake、-icke结尾的单词。
【具体规则】1.当字母组合ack出现在单词的开头或中间时,通常发/k/的音,如:attack、black、back、pack、streak、drag、flick、brick、track、vacuum等。
2.当字母组合ack出现在单词的结尾时,通常发/k/的音,如:biscuit、bucket、button、Copenhagen、Hamburg、lap、match、pattern、racket、sandwich、trap等。
【实际应用】【单词举例】以下是一些以-ack、-ake、-icke结尾的单词,请注意它们的发音:1.illacack(illakk):伊利诺伊州的别称,发音为/lkk/。
2.dictionary(dknri):词典,发音为/dknri/。
3.recalcitrant(rklktrnt):顽抗的,发音为/rklktrnt/。
【注意事项】1.有些以-ack、-ake、-icke结尾的单词在某些情况下可能发生音变,如:blackboard(blkbrd):黑板,发音为/blkbrd/;racket(rkt):球拍,发音为/rkt/。
2.有些外来词汇或专有名词可能不遵循这一发音规则,需要单独记忆其发音。
【总结】本文详细介绍了英语中字母组合ack的发音规则,并通过实际应用和单词举例进行了说明。
掌握这一发音规则有助于提高英语发音准确性和单词记忆效果。
ack的发音规则
ack的发音规则ack是英语中常见的音节,它在单词中的发音规则有一定的规律性。
下面我们来详细了解一下ack的发音规则。
首先,ack通常出现在单词的结尾位置,它的发音可以分为两种情况。
第一种情况是当ack前面是元音字母时,它的发音为/æk/。
比如,在单词back中,ack的发音为/æk/。
再比如,在单词black中,ack的发音也为/æk/。
这种情况下,ack的发音与字母a的发音相似,都是短促的音。
第二种情况是当ack前面是辅音字母时,它的发音为/k/。
比如,在单词stack中,ack的发音为/k/。
再比如,在单词track中,ack的发音也为/k/。
这种情况下,ack的发音与字母k的发音相同,都是清晰的爆破音。
除了在单词结尾位置,ack还有一种特殊的发音情况。
当ack出现在单词的中间位置时,它的发音为/ək/。
比如,在单词packet中,ack的发音为/ək/。
再比如,在单词jacket中,ack的发音也为/ək/。
这种情况下,ack的发音与字母a的发音相似,都是中性的音。
需要注意的是,ack的发音规则并不是绝对的,也有一些例外情况。
比如,在单词attack中,ack的发音为/æt/,而不是/æk/。
这是因为在这个单词中,ack前面的辅音字母t影响了ack的发音。
此外,ack还可以与其他字母组合成不同的音节。
比如,在单词backpack中,ack与字母p组合成音节/æk/,而不是/k/。
这是因为p在这个单词中起到了辅音的作用,影响了ack的发音。
总结起来,ack的发音规则可以归纳为:当ack前面是元音字母时,发音为/æk/;当ack前面是辅音字母时,发音为/k/;当ack出现在单词中间位置时,发音为/ək/。
但需要注意的是,这些规则并不是绝对的,也有一些例外情况。
通过对ack的发音规则的了解,我们可以更准确地发音,提高英语口语的表达能力。
rdma ack 重传机制
rdma ack 重传机制RDMA(Remote Direct Memory Access)是一种用于在计算机系统之间进行高性能数据传输的技术。
在RDMA中,数据可以直接从一个计算机的内存传输到另一个计算机的内存,而无需涉及CPU的参与。
这种直接的内存访问可以显著提高数据传输的效率和降低CPU 的负载。
在RDMA中,ACK(确认)和重传机制是确保数据传输可靠性的重要组成部分。
当一台计算机向另一台计算机发送数据时,接收方会发送一个ACK信号来确认已成功接收到数据。
如果发送方在一定时间内未收到ACK信号,它会触发重传机制,重新发送数据以确保数据的完整性和可靠性。
重传机制的实现可以采用多种方式,其中一种常见的方法是使用超时定时器。
发送方在发送数据后启动一个定时器,并等待接收到ACK信号。
如果在定时器超时之前未收到ACK信号,发送方将重新发送数据。
这种方式可以确保即使在网络出现故障或丢包的情况下,数据仍然能够可靠地传输。
另一种实现重传机制的方法是使用序列号和确认号。
发送方会给每个数据包分配一个唯一的序列号,接收方在收到数据包后会发送一个确认号,指示下一个期望接收的数据包序列号。
如果发送方未收到确认号,它将重新发送相应的数据包。
除了超时定时器和序列号确认号,还有其他一些方法可以实现ACK和重传机制,如选择性重传(Selective Repeat)和自适应重传(Adaptive Retransmission)等。
这些方法可以根据网络条件和需求进行选择,以提高数据传输的效率和可靠性。
总的来说,RDMA中的ACK和重传机制是确保数据传输可靠性的重要手段,通过合理的设计和实现,可以有效地保障数据传输的完整性和可靠性。
ftp协议的ack包格式
ftp协议的ack包格式【实用版】目录1.FTP 协议简介2.FTP 协议中的 ACK 包3.ACK 包的格式4.ACK 包的作用和应用5.总结正文一、FTP 协议简介FTP(File Transfer Protocol,文件传输协议)是一种用于在网络上进行文件传输的标准协议。
FTP 协议允许用户在客户端和服务器之间进行文件的上传和下载,它通过建立两个并行的连接来实现,分别是控制连接和数据连接。
控制连接负责传输控制信息,如身份验证、命令和状态信息,而数据连接则负责实际的文件传输。
二、FTP 协议中的 ACK 包在 FTP 协议中,ACK(Acknowledgment,确认)包是一种用于表示接收方已成功接收到发送方数据包的控制信息。
当客户端向服务器发送一个数据包时,服务器会回复一个 ACK 包,表示已成功接收到该数据包。
同样,当服务器向客户端发送一个数据包时,客户端也会回复一个 ACK 包,表示已成功接收到该数据包。
三、ACK 包的格式ACK 包的格式遵循 FTP 协议的规定。
一个典型的 ACK 包格式如下:```+ IP 地址 + 端口号 + 序列号 +| 控制字符 | 序列号 | 确认字符 |+ 消息类型 + 消息参数 +```其中:- “IP 地址”和“端口号”:分别表示发送方和接收方的 IP 地址和端口号。
- “序列号”:表示该 ACK 包对应的数据包的序列号。
- “控制字符”:表示 ACK 包的类型,通常为“+”。
- “确认字符”:表示接收方期望接收的下一个数据包的序列号,用于表示已成功接收到当前数据包。
- “消息类型”和“消息参数”:表示 FTP 协议中的控制命令和参数,如“220”表示服务器已成功连接,“230”表示用户已成功登录等。
四、ACK 包的作用和应用ACK 包在 FTP 协议中起到了确认和同步的作用。
通过发送和接收ACK 包,客户端和服务器可以确保数据传输的正确性和完整性。
ftp协议的ack包格式
ftp协议的ack包格式摘要:1.FTP 协议简介2.FTP 协议中的ACK 包3.ACK 包的格式4.ACK 包的作用5.结论正文:一、FTP 协议简介文件传输协议(File Transfer Protocol,简称FTP)是一种用于在网络上进行文件传输的标准协议。
FTP 协议采用客户端/服务器模型,客户端发送请求,服务器响应请求并提供文件。
FTP 协议支持匿名传输和授权用户传输,具有较好的安全性和可靠性。
二、FTP 协议中的ACK 包在FTP 协议中,ACK(Acknowledgment)包是一种用于确认接收到的数据的包。
当客户端发送请求后,服务器会返回一个包含请求结果的ACK 包。
ACK 包可以帮助客户端判断请求是否成功,以及是否需要进行重试。
三、ACK 包的格式ACK 包的格式如下:```<ACK> <字节> <数据>```其中:- <ACK>:固定字符,表示ACK 包的开始- <字节>:一个整数,表示ACK 包的长度- <数据>:可选数据,表示具体的响应内容四、ACK 包的作用ACK 包在FTP 协议中有以下作用:1.确认接收:当服务器成功接收到客户端的请求时,会返回一个包含请求结果的ACK 包,以确认请求已成功接收。
2.错误提示:当服务器无法处理客户端的请求时,会返回一个包含错误信息的ACK 包,以提示客户端请求失败。
3.数据传输:在数据传输过程中,客户端通过发送一系列数据包将文件传输给服务器。
服务器在接收到数据包后,会返回一个ACK 包,表示已成功接收到数据。
五、结论FTP 协议中的ACK 包在数据传输过程中起着关键作用,可以确认请求是否成功,以及是否需要进行重试。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目名称:模拟Modbus协议Description在嵌入式系统开发中,Modbus协议是工业控制系统中广泛应用的一种协议。
本题用来简单模拟Modbus协议,只需根据条件生成符合该协议的数据帧,并解析所获取的数据。
假设设备使用的协议发送数据格式如下:<SlaveAddress, 1 Byte> <Function, 1 Byte> <Start Address, 2 Bytes><NumberofBytes, 2 Bytes> <Checksum, 2 Bytes>其中前四项将在输入条件中给出,最后一项为CRC校验和,需根据前四项的数据,按照CRC 算法进行计算。
注意数据的长度,多于1byte的高位在前,低位在后。
该CRC校验算法的描述如下:1)将CRC赋值0xFFFF。
2)取初始信息的第一个字节(8位)与CRC进行异或运算,将结果赋给CRC。
3)将CRC数据右移一位,最前位(左边)补0。
4)如果右移前,CRC最低位(最右端)为1,则将右移后的CRC与0xA001进行异或运算,且将结果赋给CRC。
否则,跳过此步。
5)重复3,4步8次(即右边8位)。
6)对初始信息的下一个字节,同样执行2,3,4,5步,直到信息中所有字节都执行了同样的步骤。
7)将此时得到的CRC值的高8位和低8位交换,即得到CRC校验和。
对应的接收格式如下:<SlaveAddress,1Byte> <Function,1Byte> <NumberofBytes,1Byte><DataIEEE32,xByte> <Checksum,2Bytes>其中DataIEEE32为一个或多个按IEEE754标准定义的32位浮点数,具体的数据长度由NumberofBytes项来决定(比如NumberofBytes为4,则DataIEEE32项为4 bytes,正好表示一个浮点数;如为8,则DataIEEE32项为8 bytes,可表示两个浮点数)。
本题要求编程实现从IEEE32数据(如“420B999A”)到浮点数(如34.9)的转换,从而解析出浮点数值。
提示:你可以根据IEEE754标准自行设计转换算法;或者直接利用C语言float类型的实现特性:x86 linux下,gcc编译器将C语言代码“float f = 34.9;”编译成汇编代码“movl $0x420b999a, -4(%ebp)” (AT&T x86汇编格式),也就是说,单精度浮点数34.9在内存中就是由整数0x420b999a来表示的,你可以利用这一特性来完成转换。
Input输入包含多组数据,以EOF结束每组数据共两行。
第一行共四个十进制整数,分别为协议格式要求的:<SlaveAddress, 1 Byte>,<Function, 1 Byte>,<Start Address, 2 Bytes>,<NumberofBytes, 2 Bytes>,以逗号“,”分开。
如:1,4,40,2其中:1为SlaveAddress;4为Function;40为Start Address;2为NumberofBytes。
第二行为符合接收格式的数据帧(16进制表示),需从其中解析所接收的数据,其长度小于64个字符,浮点数数据最多为4个(即DataIEEE32数据项最多为32bytes)。
如: 010404420B999A7405其中:01为SlaveAddress;04为Function;04为NumberofBytes;420B999A 为DataIEEE32;7405为Checksum。
Output每组数据输出共两行。
第一行:根据输入结果的第一行,输出完整的符合该协议发送格式的数据帧,数据用16进制大写表示,每部分的长度都要求符合协议格式,比如Start Address项如果不到2 bytes,则需要在左边补零。
如:010*********F1C3其中:01为SlaveAddress;04 为Function;0028为Start Address;0002为NumberofBytes;F1C3为Checksum。
第二行:根据输入结果的第二行,依次解析IEEE32数据,将其转换成浮点数并打印结果(小数点后保留一位)。
解析之前需检查CRC校验和,如校验失败则直接打印CRC_ERROR。
如有多个数据,用逗号分隔。
如:34.9该浮点值为420B999A所对应的值。
Sample Input1,4,40,2010404420B999A74051,4,40,2010404420B999A74042,4,383,402040841CC0000477F2100DF85Sample Output010*********F1C334.9010*********F1C3CRC_ERROR0204017F0004C1DE25.5,65313.0Source (参考代码)#include <stdio.h>#include <string.h>#define MAX_RECEIVE_LEN 65int char2int(char c){if(c >= '0' && c <= '9') return c - '0';return c - 'A' + 10;}unsigned short cal_crc(unsigned char* p,int len){unsigned short ret = 0xFFFF;int i = 0,k = 0;for(;i < len;++i){ret ^= p[i];for(k = 0;k < 8;++k){ret = (ret&0x01)?((ret>>1)^0xA001):(ret>>1);}}ret = ((ret&0x00FF)<<8)|((ret&0xFF00)>>8);return ret;}int main(){int saveadd = 0,func = 0,startadd = 0,num = 0,i = 0,len = 0,k = 0;unsigned short val = 0;unsigned char receive[MAX_RECEIVE_LEN];unsigned char receivetmp[MAX_RECEIVE_LEN];unsigned char str[MAX_RECEIVE_LEN];unsigned char fstr[4];float * pf = NULL;while(EOF != scanf("%d,%d,%d,%d",&saveadd,&func,&startadd,&num)) {str[0] = saveadd;str[1] = func;str[3] = startadd&0xFF;startadd >>= 8;str[2] = startadd&0xFF;str[5] = num&0xFF;num >>= 8;str[4] = num&0xFF;val = cal_crc(str,6);str[7] = val&0xFF;val >>= 8;str[6] = val&0xFF;for(i = 0;i < 8;++i) printf("%02X",str[i]);printf("\n");scanf("%s",receivetmp);len = strlen((char*)receivetmp)/2;for(i = 0;i < len;++i){receive[i] = (unsignedchar)(char2int(receivetmp[i*2])*16+char2int(receivetmp[i*2+1]));}val = cal_crc(receive,len-2);if((val&0xFF) != receive[len-1]||((val>>8)&0xFF) != receive[len-2]) { printf("CRC_ERROR\n");continue; }k = 2;num = receive[k]/4;++k;for(i = 0;i < num;++i){fstr[0] = receive[k+3];fstr[1] = receive[k+2];fstr[2] = receive[k+1];fstr[3] = receive[k];pf = (float*)(fstr);printf("%.1f",*pf);if(i != num - 1) printf(",");k += 4;}if(0 != num) printf("\n");}return 0;}题目名称:根据关键字进行字符串拷贝Description把源字符串拷贝到目的字符串,如果指定关键字,则以该关键字结束(不包括关键字本身),如果拷贝失败,则得到空串。
具体要求:实现如下函数原型SafeStrcpy2KeyWord(),并在代码中调用该函数实现上述功能。
该函数的实现要考虑各种可能的参数取值,以确保程序不出现崩溃。
int SafeStrcpy2KeyWord(char* pDestBuffer, //拷贝的目的地地址char* pSourceString, //拷贝的源地址int nDestBufferSize, //拷贝的目的地缓冲区长度char* szKeyWord); //指定关键字符串返回值:所拷贝的字符串长度。
如果拷贝失败,则返回0。
Input输入包含多组数据,以EOF结束每组数据第一行为不含空格的源字符串,长度小于256;接下来的一行或多行都是关键字串(长度小于16),一直到END结束。
“NULL”表示关键字串为空,此时输出的拷贝后的长度应为0,拷贝后的字符串为空串(也用”NULL”表示,见下文)。
Output对于每组数据输出拷贝的长度和拷贝后的目的字符串,以空格分隔。
如果该目的字符串为空,则用”NULL”表示。