摘要:
strcat函数:原型:extern char *strcat(char *strDest, char *strSrc);功能:把strSrc所指字符串添加到strDest结尾处(覆盖strDest结尾处的'\0')并添加'\0';说明:strSrc和strDest所指内存区域不可以重叠且strDest必须有足够的空间来容纳strSrc的字符串。返回指向strDest的指针。 1 char *strcat(char *strDest, const char *strSrc) 2 { 3 char *address = strDest; 4 assert((str 阅读全文
摘要:
strlen 标准函数: 1 int strlen(const char *str) 2 { 3 assert(str != NULL); 4 int len; 5 while ((*str++) != '\0') 6 { 7 len++; 8 } 9 return len;10 } 1 int strlen(const char *str) 2 { 3 assert(str != NULL); 4 char *tmp= str; 5 while (*tmp++) 6 { 7 ; 8 } 9 return (tmp - str -... 阅读全文
摘要:
strcpy中的循环语句:while ((*strDest++ = *strSrc++) != '\0')这个循环会一直执行,直到循环条件为空,即'\0',也就是说,如果strDest所指的存储空间不够大的话,这个函数会将strSrc中的部分内容拷贝到strDest所指内存空间后面的内存中。而strDest所指空间后面的内存却是不可知的,有可能已经被其他资源占用了,这样就会破坏原先存储的内容,导致系统崩溃。因为strcpy在执行字符串拷贝的时候,会从strSrc所指位置开始,检测当前内存单元中存储的数据是否为'\0'。如果不为'\0 阅读全文
摘要:
1、 声明外部变量 现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。下面举一个简单的例子。创建一个工程,里面含有A.cpp和B.cpp两个简单的C++源文件:1 //A.cpp2 int i;3 void main()4 {5 6 7 }1 //B.cpp2 3 int i; 这两个文件极为简单,在A.cpp中我们定义了一个全局变量i,在B中我们也定义了一个全局变量i。我们对A和B分别编译,都可以正常通过编译,但是进行链接的时候,却出现了错误,错误提示如下:Linking...B.obj : erro. 阅读全文
摘要:
1 char* strcpy(char* strDest,const char* strSrc) 2 { 3 if((strDest == NULL) || (strSrc == NULL)) //[1] 4 throw "Invalid Arguments"; //[2] 5 6 //assert((strDest!=NULL) && (strSrc !=NULL)); 7 char* strDestCopy = strDest; //[3] 8 while((*strDest++ = *strSrc++) != '\0')//[4] 9 阅读全文
摘要:
strcpy原型声明:extern char *strcpy(char *dest, char *src)头文件;string.h功能:把src所指由NULL结束的字符串复制到dest所指的数组中。说明:src和所指内存区域不可以重叠且必须有足够的空间来容纳src的字符串,返回指向dest的指针。不使用库函数实现strcpy函数(工业级) 1 char *strcpy(char *strDest, const char *strSrc) 2 { 3 assert((strDest != NULL)&&(strSrc !=NULL)); 4 char *tmp = strDest 阅读全文