字符串处理相关库函数实现
本文最后更新于 155 天前,其中的信息可能已经有所发展或是发生改变。
/**
 * @file        strlen.c
 * @brief       字符串处理相关库函数实现
 * @author      philia
 * @date        2025-04-11
 * @version     1.0
 * @details     none
 * @copyright   (c) 2026 philia. All rights reserved
 */

#include <stdio.h>
#include <string.h>

/* 源文件内容 */

int stringlen(const char* str)
{
    int len = 0;
    for(len = 0; str[len] != '\0' ; len++);
    return len;
}

char* stringcpy(char* dest , const char* srcstr)
{
    int i = 0;
    for(i = 0; srcstr[i] != '\0'; i++)
    {
        dest[i] = srcstr[i];
    }
    dest[i+1] = '\0';
    return dest;
}

int stringcmp(const char *s1, const char *s2) {
    while (*s1 && (*s1 == *s2)) {
        s1++;
        s2++;
    }
    return *(unsigned char*)s1 - *(unsigned char*)s2;
}


char *stringcat(char *dest, const char *src)
{   
    int destlen = 0;
    int srclen = 0;
    for(destlen = 0; dest[destlen] != '\0' ; destlen++);

    for(srclen = 0;src[srclen] != '\0' ; srclen++)
    {
        dest[destlen + srclen ] = src[srclen];
    }
    dest[destlen + srclen ] = '\0';
    return dest;
}

char *stringchr(const char *str, int c)
{   
    for(int strlen = 0;str[strlen] != '\0' ; strlen++)
    {
       if(str[strlen] == c)
       {       
         return (char *)(str + strlen);
       }
    }
    return NULL;
}

char *stringstr(const char *haystack, const char *needle) {
    if (!*needle) return (char *)haystack;  
    
    for ( ; *haystack; haystack++) {
        const char *h = haystack;
        const char *n = needle;
        while (*h && *n && (*h == *n)) {
            h++;
            n++;
        }
        if (!*n) return (char *)haystack;  
    }
    return NULL;
}


int main() {
    //字符串长度测试
    char test[64] = "Hello World!";
    printf("字符串长度为:%d\n",stringlen(test));

    //字符串复制测试
    char temp[64] = "0";
    printf("复制的字符串为:%s\n",stringcpy(temp,test));

    //字符串比较测试
    int same = stringcmp(test, temp);
    if(same == 0)
    {
        printf("字符串相同!\n");
    }
    else
    {
        printf("字符串不同!\n");
    }

    //字符串拼接测试
    printf("拼接的字符串为:%s\n",stringcat(test,temp));

    //字符查找测试
    char *pos = stringchr(test, 'o');
    if (pos != NULL) {
        printf("字符 '%c' 首次出现在位置: %ld\n", 'o', pos - test);
    } else {
        printf("未找到字符 '%c'\n", 'o');
    }

    //字符串匹配测试
    const char *str = "hello world";
    char *pos1 = strstr(str, "world");
    
    if (pos1) {
        printf("找到字符串起始位置: %ld\n", pos1 - str);  
        printf("剩余字符串: %s\n", pos1);      
    } else {
        printf("未找到\n");
    }

    return 0;
}

/*
*
*字符串长度为:12
*复制的字符串为:Hello World!
*字符串相同!
*拼接的字符串为:Hello World!Hello World!
*字符 'o' 首次出现在位置: 4
*找到字符串起始位置: 6
*剩余字符串: world
*           
*
**/
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇