117.info
人生若只如初见

c语言字符串函数怎么定义

在C语言中,字符串函数可以通过以下两种方式定义:

  1. 使用字符数组作为参数和返回值
#include 

// 字符串长度
int my_strlen(char str[]) {
    int len = 0;
    while (str[len] != '\0') {
        len++;
    }
    return len;
}

// 字符串复制
void my_strcpy(char dest[], char src[]) {
    int i = 0;
    while (src[i] != '\0') {
        dest[i] = src[i];
        i++;
    }
    dest[i] = '\0';
}

// 字符串连接
void my_strcat(char dest[], char src[]) {
    int dest_len = my_strlen(dest);
    int i, j = 0;
    for (i = dest_len; src[j] != '\0'; i++, j++) {
        dest[i] = src[j];
    }
    dest[i] = '\0';
}

int main() {
    char str1[100] = "Hello";
    char str2[100] = "World";

    printf("str1 length: %d\n", my_strlen(str1));
    
    my_strcpy(str1, str2);
    printf("str1 after copy: %s\n", str1);
    
    my_strcat(str1, str2);
    printf("str1 after concatenation: %s\n", str1);

    return 0;
}
  1. 使用指针作为参数和返回值
#include 

// 字符串长度
int my_strlen(char *str) {
    int len = 0;
    while (*str != '\0') {
        len++;
        str++;
    }
    return len;
}

// 字符串复制
char* my_strcpy(char *dest, char *src) {
    char *p = dest;
    while (*src != '\0') {
        *dest = *src;
        dest++;
        src++;
    }
    *dest = '\0';
    return p;
}

// 字符串连接
char* my_strcat(char *dest, char *src) {
    char *p = dest;
    while(*dest != '\0') {
        dest++;
    }
    while (*src != '\0') {
        *dest = *src;
        dest++;
        src++;
    }
    *dest = '\0';
    return p;
}

int main() {
    char str1[100] = "Hello";
    char str2[100] = "World";

    printf("str1 length: %d\n", my_strlen(str1));
    
    my_strcpy(str1, str2);
    printf("str1 after copy: %s\n", str1);
    
    my_strcat(str1, str2);
    printf("str1 after concatenation: %s\n", str1);

    return 0;
}

无论使用字符数组还是指针,都可以实现相同的功能。但是需要注意指针的使用需要更谨慎,避免指针操作超出字符串的范围。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe725AzsLAAdSBFY.html

推荐文章

  • c语言goto用法是什么

    在C语言中,goto语句用于从一个位置跳转到另一个位置。它可以用于跳出循环、条件语句或者函数。goto语句的语法如下:
    goto label;
    ...
    label: //...

  • goto在c语言中的运用方法是什么

    goto 语句在 C 语言中允许程序从一个位置跳转到另一个位置。然而,在实际编程中,过度使用 goto 语句通常被认为是一种不好的编程实践,因为它可能导致代码结构混...

  • c语言堆和栈的区别是什么

    C语言中的堆和栈是两种不同的内存分配方式。 栈(Stack):栈是由编译器自动分配和释放的内存区域,用于存储局部变量和函数调用的上下文信息。栈的特点是先进后出...

  • C语言结构体数组怎么定义和使用

    在C语言中,可以通过定义结构体数组来存储多个具有相同数据类型的结构体对象。下面是定义和使用结构体数组的示例代码:
    #include // 定义一个结构体类型

  • oracle怎么查看job状态

    要查看Oracle中的作业状态,可以使用以下方法之一:1、使用Oracle Enterprise Manager(OEM):登录到OEM控制台,导航到“作业”部分,然后选择要查看状态的作业...

  • spark提交任务的方式有哪几种

    Spark提交任务的方式有以下几种: 在命令行中使用spark-submit命令提交任务。这是最常见的方式,可以将任务的相关参数和选项以命令行的形式传递给spark-submit命...

  • linux中nginx启动停止命令是什么

    在Linux中,Nginx的启动和停止命令如下:启动Nginx服务:sudo systemctl start nginx停止Nginx服务:sudo systemctl stop nginx重启Nginx服务:sudo systemctl r...

  • Go语言中正则表达式的语法是什么

    Go语言中正则表达式的语法与其他语言中的正则表达式语法基本类似,但也有一些小的差异。以下是Go语言中常用的正则表达式语法: 字符匹配 .:匹配任意一个字符(除...