模拟实现不受限制的字符串函数(strcat、strcpy、strcmp)
2017-07-29 21:33
369 查看
使用这些函数时,需要注意到以下几点:
1)目标空间足够大,
2)原字符串有‘\0
目标空间可改 (strcpy 字符串拷贝)
目标字符串中’\0’被覆盖(strcat 字符串追加)
目标空间不可改(strcmp 字符串比较)
3)断言(assert)
三个库函数的原型为下:
//模拟实现strcpy(字符串拷贝)
//模拟实现strcmp(字符串比较)
//strcat字符串追加
学习这些字符串比较函数,对我们今后学习字符串有很大的帮助,希望这些可以帮助到大家。
1)目标空间足够大,
2)原字符串有‘\0
目标空间可改 (strcpy 字符串拷贝)
目标字符串中’\0’被覆盖(strcat 字符串追加)
目标空间不可改(strcmp 字符串比较)
3)断言(assert)
三个库函数的原型为下:
char *strcpy( char *strDestination, const char *strSource ); char *strcat( char *strDestination, const char *strSource ); int strcmp( const char *string1, const char *string2 );
//模拟实现strcpy(字符串拷贝)
char*my_strcpy(char* pdest, const char*psrc) { char *ret = pdest; assert(pdest); assert(psrc); while (*psrc != NULL) { *pdest = *psrc; pdest++; psrc++; } return ret; } int main() { int *arr = "abcdef"; int buf[20] = { 0 }; my_strcpy(buf, arr); printf("%s\n", buf); system("pause"); return 0; }
//模拟实现strcmp(字符串比较)
int my_strcmp(const char *string1, const char *string2) { assert(string1 != NULL); assert(string2 != NULL); while (*string1 == *string2) { if (*string1 == '\0') return 0; string1++;//如果相等,则一直向后比较 string2++; } return *string1 - *string2;//如果两者不相等,则利用ascll值返回 } int main() { char *arr1 = "abcde"; char *arr2 = "abcd"; int ret = my_strcmp(arr1, arr2); printf("%d\n", ret); system("pause"); return 0; }
//strcat字符串追加
char *strcat( char *strDestination, const char *strSource ); char *my_strcat(char *pdest, const char *pstr) { assert(pdest!= NULL); assert(pstr != NULL); char *ret = pdest; while (*pdest != '\0')//找目标空间的'\0' { pdest++; } while (*pstr != '\0')//拷贝字符串到目标空间 { *pdest = *pstr; *pdest++; *pstr++; } return ret; } int main() { char arr[20] = "hello "; char*p = "world"; my_strcat(arr, p); printf("%s\n", arr); system("pause"); return 0; }
学习这些字符串比较函数,对我们今后学习字符串有很大的帮助,希望这些可以帮助到大家。
相关文章推荐
- C语言字符串函数的模拟实现(strlen、strcpy、strcat、strstr 、strcmp)
- 字符串函数模拟实现之strcpy、strncpy、strcmp、strncmp、strcat、strncat
- 模拟实现strlen,strcpy,strcmp,strcat,strstr库函数
- strcpy,strcmp,strstr,strcat,memcpy,memmove,memset的模拟实现
- strcpy,strcat,strcmp,strstr的模拟实现
- 模拟实现字符串操作函数(strcpy,strstr,strcat,strcmp,strlen)与内存操作函数(memcpy,memmove)
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- C语言模拟实现strcpy、strlen、strcmp、strcat
- C语言模拟实现strcpy、strncpy、strcmp、strcat、strstr
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- 模拟实现strcpy,strncpy,strcat,strncat,strcmp,strncmp
- 和字符串有关的函数的模拟实现 strlen strcpy strcat strstr strcmp
- 模拟实现部分库函数(strcpy,strcmp,strcat,strstr,memcpy,memmove,memset)
- 模拟实现strcpy 模拟实现strncpy 模拟实现strcat 模拟实现strncat 模拟实现strcmp 模拟实现strncmp 模拟实现memcpy 模拟实现memmove
- 模拟实现strlen、strcpy、strncpy、strcat、strcmp
- 模拟实现strcpy,strcat,strcmp
- strlen,strcpy,strcat,strcmp,strchr 的模拟实现
- 笔试题 字符串函数的实现(strcpy, strcat, strcmp, memset, memcpy, memmove)
- 模拟实现strcpy、strcat、strstr、strchr、strcmp、memcpy、memmove
- 模拟实现C库函数strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove