strcpy和strlen

string.h:C语言里面关于字符数组的函数定义的头文件,常用函数有strlenstrcmpstrcpy等等,更详细的可以到include文件夹里面查看该文件。

%c格式对应的是单个字符,%s格式对应的是字符串

char * strcpy(char *strdest,const char *strsrc)

{

     assert((strdest!=NULL)&&(strsrc!=NULL));

     char *result=strdest;

     while((*strdest++=*strsrc++)!='\0');//复制了字符串的结束字符'\0'

      return address;

}

int strlen(const char *str)

{

     assert(str!=NULL);

      int len=0;

     while(*str!='\0')

              {len++;}                //没有计算字符串的结束字符'\0'

     return len;

}

C里的宏
宏名: assert
功 能: 测试一个条件并可能使程序终止
 
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:
1
2
3
4
5
6
#defineassert(expr)\
((expr)\
?__ASSERT_VOID_CAST(0)\
:__assert_fail(__STRING(expr),__FILE__,__LINE__,__ASSERT_FUNCTION))
 
/*DefinedInGlibc2.15*/
assert的作用是先计算表达式expr,如果其值为假(即为0),那么它会打印出来assert的内容和__FILE__, __LINE__, __ASSERT_FUNCTION,然后执行abort()函数使kernel杀掉自己并coredump(是否生成coredump文件,取决于系统配置);否则,assert()无任何作用。宏assert()一般用于确认程序的正常操作,其中表达式构造无错时才为真值。完成调试后,不必从源代码中删除assert()语句,因为宏NDEBUG有定义时,宏assert()的定义为空。[1] 
 
 

一,什么是coredump

        我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要满足一定的条件呢?下面会分析)会产生一个叫做core的文件。

        通常情况下,core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态存储生成第一个文件,许多的程序出错的时候都会产生一个core文件,通过工具分析这个文件,我们可以定位到程序异常退出的时候对应的堆栈调用等信息,找出问题所在并进行及时解决。

二,coredump文件的存储位置

   core文件默认的存储位置与对应的可执行程序在同一目录下,文件名是core,大家可以通过下面的命令看到core文件的存在位置:

   cat  /proc/sys/kernel/core_pattern

   缺省值是core

 

 

#include <iostream> using namespace std; char * strcpy(char *strdest,const char *strsrc)

{

     assert((strdest!=NULL)&&(strsrc!=NULL));

     char *result=strdest;

     while((*strdest++=*strsrc++)!='\0');//复制了字符串的结束字符'\0'

      return address;

}    int main()  {   char *str1="22";   char *str2="3344";   char *str3=strcpy(str1,str2);   cout<<*str3;   return 0;  }

 

 

#include <string.h> #include <stdio.h>

int main() {  char *str1="22";   char *str2="3344";   char *str3=strcpy(str1,str2);   printf("%s",str3);   return 0; }

posted @ 2015-10-11 11:18  小小瓶盖  阅读(524)  评论(0编辑  收藏  举报