C语言字符串以及相关指针的使用
这是我写的strcpy函数的例程:
char* strcpy1(char* strDest,char* strSrc) { int i = 0; if(checkNull(strSrc) == 0) return NULL; while(strSrc[i] != '\0') { strDest[i] = strSrc[i]; i++; } strDest[i] = '\0'; return strDest; } int checkNull(char* str) { int len = strlen(str); if(len == 0) return 0; else return 1; }
另外还可以这么写:
char* strcpy1(char* strDest,char* strSrc) { int i = 0; if(checkNull(strSrc) == 0) return NULL; while(*strSrc != '\0') { *strDest = *strSrc; strDest++; strSrc++; } *strDest = '\0'; return strDest; } int checkNull(char* str) { int len = strlen(str); if(len == 0) return 0; else return 1; }
这个小程序并不难,但是我写的时候暴露了很多问题,仔细研究这些问题,可以提高自己对C指针的理解深度。
1、首先是字符串的定义,字符串在C语言的机制中和字符数组是一致的,只是字符串末尾以'\0'结束
因此定义一个字符串可以有两种形式。
char *s = "Hello World";
char s[20];
但是注意 如果只是定义了char *s;这样是不对的,因为此时s指针并没有显式的被分配值,这样程序运行的时候很有可能因为指针地址不正确造成程序崩溃。
而应该在定义了指针s之后,分配空间src = (char*)malloc(sizeof(char)*100);
2、另外就是字符串的遍历方法,上面的两个例程明确的说明了遍历的方式。