当前位置:好职网>职场指南>笔试>笔试题总结

笔试题总结

时间:2022-05-08 10:32:15 笔试 我要投稿
  • 相关推荐

笔试题总结

 首先看一下strcpy这个函数:

笔试题总结

原型声明:extern char *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, const char *strSource);

  {

  assert(strDestination && strSource);

  char *cp=strDestination;

  while(*cp++ = *strSource++);

  return strDestination;

  }

实战一下,下面几个test用于找错:
void test1()
{
char string[10];
char* str1=\"0123456789\";
strcpy(string, str1);
}
答:表面上并且编译都不会错误。但如果string数组原意表示的是字符串的话,那这个赋值就没有达到意图。最好定义为char string[11],这样最后一个元素可以存储字符串结尾符\\\0\;

void test2()
{
char string[10], str1[10];
for(int I=0; I<10;I++)
{
str1[I] =\a\;
}
strcpy(string, str1);
}
答:strcpy使用错误,strcpy只有遇到字符串末尾的\\\0\才会结束,而str1并没有结尾标志,导致strcpy函数越界访问,不妨让str1[9]=\\\0\,这样就正常了。

void test3(char* str1)
{
char string[10];
if(strlen(str1)<=10)
{
strcpy(string, str1);
}
}
答:这又会出现第一道改错题的错误了。strlen(str1)算出来的值是不包含结尾符\\\0\的,如果str1刚好为10个字符+1结尾符,string就得不到结尾符了。可将strlen(str1)<=10改为strlen(str1)<10。

【笔试题总结】相关文章:

大班笔的教案12-22

笔的世界教学反思02-19

各种各样的笔教案03-27

《各种各样的笔》教案03-08

笔的世界教学反思8篇02-26

圆珠笔采购合同11-17

关于软笔书法教学计划范文09-10

职场礼仪的试题-职场礼仪01-28

2021年软笔书法教学计划范文09-11

关于软笔书法教学计划(通用7篇)12-24