笔试题总结.docx
上传人:努力****承悦 上传时间:2024-09-14 格式:DOCX 页数:3 大小:11KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

笔试题总结.docx

笔试题总结.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

笔试题总结笔试题总结首先看一下strcpy这个函数:原型声明:externchar*strcpy(char*dest,char*src);头文件:string.h功能:把src所指由NULL结束的字符串复制到dest所指的数组中。说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。*C语言标准库函数strcpy的一种典型的工业级的最简实现*返回值:*返回目标串的地址。*对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。*参数:*strDeatination*目标串*strSource*源串***********************/char*strcpy(char*strDestination,constchar*strSource);{assert(strDestination&&strSource);char*cp=strDestination;while(*cp++=*strSource++);returnstrDestination;}实战一下,下面几个test用于找错:voidtest1(){charstring[10];char*str1=\"0123456789\";strcpy(string,str1);}答:表面上并且编译都不会错误。但如果string数组原意表示的是字符串的话,那这个赋值就没有达到意图。最好定义为charstring[11],这样最后一个元素可以存储字符串结尾符\\\0\;voidtest2(){charstring[10],str1[10];for(intI=0;I<10;I++){str1[I]=\a\;}strcpy(string,str1);}答:strcpy使用错误,strcpy只有遇到字符串末尾的\\\0\才会结束,而str1并没有结尾标志,导致strcpy函数越界访问,不妨让str1[9]=\\\0\,这样就正常了。voidtest3(char*str1){charstring[10];if(strlen(str1)<=10){strcpy(string,str1);}}答:这又会出现第一道改错题的错误了。strlen(str1)算出来的值是不包含结尾符\\\0\的,如果str1刚好为10个字符+1结尾符,string就得不到结尾符了。可将strlen(str1)<=10改为strlen(str1)<10。