面试常考题:不调用库函数,怎样实现字符串操作函数?

来源:互联网 发布:网络兼职能信吗 编辑:程序博客网 时间: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
原创粉丝点击