strcpy和strlen
string.h:C语言里面关于字符数组的函数定义的头文件,常用函数有strlen、strcmp、strcpy等等,更详细的可以到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;
}
1
2
3
4
5
6
|
#defineassert(expr)\ ((expr)\ ?__ASSERT_VOID_CAST(0)\ :__assert_fail(__STRING(expr),__FILE__,__LINE__,__ASSERT_FUNCTION)) /*DefinedInGlibc2.15*/ |
一,什么是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; }