面试常考题:不调用库函数,怎样实现字符串操作函数?
来源:互联网 发布:网络兼职能信吗 编辑:程序博客网 时间:2024/06/05 05:08
一:字符串操作函数的功能及应用1、strcpy()函数 Strcpy(字符数组1,字符数组2)此函数是字符串拷贝函数,它的作用是将字符串2复制到字符数组1中去。#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){char str1[30] = { "hello world!!!" };char str2[30];strcpy(str2, str1);printf("%s", str2);system("pause");return 0;}2、strcat()函数 此函数是字符串连接函数,,其一般形式为strcat(字符数组1,字符数组2),作用是将字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值,即字符数组1的地址。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char str1[30] = { "we are friend " }; char str2[30]= { "all the time!" }; printf("%s", strcat(str1,str2)); system("pause"); return 0;}3、strcmp()此函数是字符串比较函数,其一般形式为strcmp(字符串1,字符串2)。字符串比较规则是将两个字符串从左至右逐个字符相比,直到出现不同的字符或者遇到’\0’为止。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char passwd; char key[30] = { "abcdef " }; scanf("%s", &passwd); if (strcmp(key, passwd) == 0) { printf("密码正确\n"); } else { printf("密码错误\n"); } system("pause"); return 0;}4、strchr() 此函数功能是查找字符串中首次出现某个字符的位置。,成功返回所查找字符第一次出现的位置,失败返回NULL.#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>int main(void){ char string[17]; char *p, c = 'r'; strcpy(string, "thisisastring"); p = strchr(string, c); if (p) printf("字符c的位置在:%s\n", c, p); else printf("字符c没有找到"); system("pause"); return 0;}5、strstr() #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char str[10]="1234xyz"; char *str1 = strstr(str, "34"); if (*str1) { printf("查找成功\n"); } else { printf("查找失败\n"); } system("pause"); return 0;}6、strlen() 测字符串长度的函数。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char str[10]="china"; printf("%d\n", sizeof(str)); printf("%d\n", strlen(str)); system("pause"); return 0;}二:字符串操作函数实现1、strlen()函数的实现方法一:int my_strlen(const char*str){ int length = 0; while (*str ++!= '\0') { length++; } return length;}方法二:使用指针-指针的方法实现 使用指针减去指针的方法的条件是:两个指针指向同一数组中的元素。1:指针减去指针的结果是两个指针之间元素的个数,不是元素的长度。2:如果两个指针指向两个不同数组的元素, 那么他们之间 相减的结果是未定义的。int _my_strlen(char * s){ char* p = s ; while (*p != '\0' ) p++; return p - s ;}2、strcpy()函数的实现方法一:char *strcpy(char *dest,const char *src ){ if ((dest == NULL) || (src == NULL)) { return NULL; } char *ret_string = dest ; while (*dest ++ = *src++) != ’\0′); return ret_string;}注:返回char * 指针的原因是为了实现链式表达式,如:int length = strlen(strcpy(dest, “hello world”));方法二:#include <stdio.h>#include <assert.h>char* my_strcpy(char *dest, const char * src){ assert(dest != NULL );//assert(dest); assert(src); char *ret = dest ; while (*dest ++ = *src++) { ; } /*while (*src != '\0') { *dest++ = *src++; } *dest = '\0';*/ return ret;}int main(){ char arr[20] = "abc" ; char p[] = "change world!" ; //链式访问 printf( "%d\n", strlen(strcpy(arr, p))); printf( "%s\n", arr); system( "pause"); return 0;}3、strcat()函数的实现char * __cdecl strcat(char * dst, const char * src){ char * cp = dst ; while (*cp) cp++; while (*cp++ = *src ++); return(dst );}
本文出自 “10911544” 博客,转载请与作者联系!
0 0
- 面试常考题:不调用库函数,怎样实现字符串操作函数?
- 不调用字符串库函数,实现字符串复制函数
- 实现常用字符串处理函数(不调用库函数)
- 不使用库函数,实现字符串操作源码
- 不调用库函数,实现strcpy函数
- 不调用库函数,实现strcpy() 函数
- 不调用库函数,实现strcpy函数
- 不调用库函数,实现strcpy函数
- 不调用库函数,实现strcpy函数
- 不调用库函数,实现strcpy() 函数
- 不调用库函数,模拟实现strcpy函数
- 不使用库函数实现字符串处理函数
- 不调用C++/C字符串库函数,实现字符串复制函数strcpy
- 面试EJB常考题
- 面试常考题
- android面试常考题
- Servlet面试常考题
- 不调用库函数,实现strcpy函数;编程实现memcpy函数
- Android中定时执行任务的3种实现方法
- SVN图标总结及冲突解决
- 循环语句
- Javaweb学习总结(一)--数据库连接池
- IO口扫键归纳
- 面试常考题:不调用库函数,怎样实现字符串操作函数?
- 【iOS开发】canOpenURL: failed for URL
- 程序员必备面试题
- 动态内存管理
- oracle表重命名
- 单链表常见面试题
- C++的特性——继承
- Oracle常用函数:nvl/nullif/case when/wm_concat/replace
- iOS图像处理之Core Image ------ 吴白