C语言字符数组常用函数实现

C语言中字符数组的常用函数有以下几个:

strlen(str):返回字符串str的长度;
strcpy(str1,str2):将字符串str2复制到字符串str1中,并返回字符串str1;
strchr(str,ch):返回在字符串str中第一次出现指定的字符ch的地址;
strcat(str1,str2):将字符串str2连接到字符串str1的尾部,并返回连接后的字符串str1;
strcmp(str1,str2):比较两个字符串str1和str2,若str1大于(等于、小于)str2,则返回大于(等于、小于)0的数;
strstr(str1,str2):在字符串str1中查找指定的字符串str2第一次出现的位置,并返回地址值;
函数的实现:
1.strlen(str)

#include <stdio.h>
#include <string.h>
#define N 100

void main()
{
    int i = 0;
    char str[N];
    printf("input a str:");

/*
    //字符串的输入 
    fgets(str,6,stdin);
    gets(str);
    for(i = 0;i < 5;i++)
       scanf("%s",str);
    i = strlen(str);        //使用strlen();
*/
    while( str[i] != '\0')    //自定义实现
    {
        i++;
    }    
    printf("%d\n",i);
    
}

2.strcpy(str1,str2)

#include <stdio.h>
#include <string.h>
#define N 100

void main()
{
    int i = 0;
    int j = 0;
    char str1[N] = {0};
    char str2[N] = {0};
    printf("input a str1:");
    gets(str1);
    printf("input a str2:");
    gets(str2);
    
//   strcpy(str1,str2);        //strcpy();
    while(str2[i] != '\0')    //自定义实现strcpy();
    {
        str1[i] = str2[i];
        i++;
    }
    puts(str1);    
}

3.strchr(str,ch)

#include <stdio.h>
#include <string.h>
#define N 100

void main()
{
    int i = 0;
    char ch;
    char str[N];
    printf("input a str:");
    gets(str);
    printf("input a char:");
    ch =  getchar();

//    printf("%d\n",strchr(str,ch));    //打印地址
//    printf("%s\n",strchr(str,ch));    //打印ch及后面的字符
    while(str[i] != '\0')            //自定义实现strchr();
    {
        if(str[i] == ch)
            break;
        i++;
    }
    printf("%d\n",i);
}

4.strcat(str1,str2)

#include <stdio.h>
#include <string.h>
#define N 100

void main()
{
    int i = 0;
    int j = 0;
    char str1[N] = {0};
    char str2[N] = {0};
    printf("input a str1:");
    gets(str1);
    printf("input a str2:");
    gets(str2);
    
    strcat(str1,str2);        //strcat();
    
/*    while(str1[i] != '\0')    //自定义实现strcat();
        i++;
    while(str2[j] != '\0')
    {
        str1[i+j] = str2[j];
        j++;
    }
 */  
    puts(str1);
        
}

5.strcmp(str1,str2)

#include <stdio.h>
#include <string.h>
#define N 100

void main()
{
    int i = 0;
    int j = 0;
    char str1[N] = {0};
    char str2[N] = {0};
    printf("input a str1:");
    gets(str1);
    printf("input a str2:");
    gets(str2);
    
 //   j = strcmp(str1,str2);            //strcmp();
 //   printf("%d\n",j);
    
    while((str1[i] == str2[i]) && (str1[i] != '\0'))//自定义实现strcmp();打印不同字符的差值
            i++;
    printf("%d\n",str1[i] - str2[i]);
    
}

6.strstr(str1,str2)

#include <stdio.h>
#include <string.h>
#define N 100

void main()
{
    int i = 0;
    int j = 0;
    int k = 0;
    char str1[N] = {0};
    char str2[N] = {0};
    printf("input a str1:");
    gets(str1);
    printf("input a str2:");
    gets(str2);

    //  j =  strstr(str1,str2);    //strstr();
    //   printf("%d\n",j);
    while(str1[i] != '\0')      //自定义实现strstr();打印查找到的地址值,若没有查到,则返回0
    {
        if(str1[i] != str2[j])
            i++;
        if(str1[i] == str2[j])
        {
            i++;
            j++;

            if(str2[j] == '\0')
            {
                k = 0;
                break;
            }
            if(str1[i] != str2[j])
            {
                k = 1;
            }
        }
    }

    if(k == 1)
        printf("%d\n",0);
    else if(k == 0)
        printf("%d\n",i-j+1);

}

初学C语言,以上代码若有错误,请指正!谢谢!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值