本文最后更新于 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
*
*
**/


