C语言字符串拼接函数集

这篇具有很好参考价值的文章主要介绍了C语言字符串拼接函数集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

字符串拼接函数

字符串内置库函数

C语言提供了许多用于处理字符串的内置函数。下面是一些常用的C语言字符串函数及其用法的简介:

strlen()

strlen()函数用于计算字符串的长度。该函数需要一个字符串作为参数,并返回字符串的长度。函数申明如下:

#include <string.h>

size_t strlen(const char *str);

使用示例:

char str[] = "Hello World";
size_t length = strlen(str);
printf("Length of the string: %zu\n", length);

输出内容:

Length of the string: 11

strcpy()

strcpy()函数用于将一个字符串复制到另一个字符串。该函数需要两个字符串作为参数,并返回目标字符串。函数申明如下:

#include <string.h>

char *strcpy(char *dest, const char *src);

使用示例:

char src[] = "Hello";
char dest[10];
strcpy(dest, src);
printf("Copied string: %s\n", dest);

输出内容:

Copied string: Hello

strcat()

strcat()函数用于将两个字符串连接起来。该函数需要两个字符串作为参数,并返回目标字符串。函数申明如下:

#include <string.h>

char *strcat(char *dest, const char *src);

使用示例:

char str1[] = "Hello";
char str2[] = " World";
strcat(str1, str2);
printf("Concatenated string: %s\n", str1);

输出内容:

Concatenated string: Hello World

strcmp()

strcmp()函数用于比较两个字符串。该函数需要两个字符串作为参数,并返回一个整数。函数申明如下:

#include <string.h>

int strcmp(const char *str1, const char *str2);

使用示例:

char str1[] = "Hello";
char str2[] = "World";
int result = strcmp(str1, str2);
if (result == 0) {
    printf("Strings are equal.\n");
} else if (result < 0) {
    printf("String 1 is less than string 2.\n");
} else {
    printf("String 1 is greater than string 2.\n");
}

输出内容:

String 1 is less than string 2.

strstr()

strstr()函数用于在一个字符串中查找另一个字符串。该函数需要两个字符串作为参数,并返回一个指向第一个字符串中第二个字符串第一次出现的位置的指针。函数申明如下:

#include <string.h>

char *strstr(const char *haystack, const char *needle);

使用示例:

char str[] = "Hello World";
char *found = strstr(str, "World");
if (found != NULL) {
    printf("Substring found at index: %ld\n", found - str);
} else {
    printf("Substring not found.\n");
}

输出内容:

Substring found at index: 6

strtok()

strtok()函数用于将一个字符串分解成一组字符串。该函数需要两个字符串作为参数,并返回一个指向第一个分解后的字符串的指针。函数申明如下:

#include <string.h>

char *strtok(char *str, const char *delim);

使用示例:

char str[] = "Hello World";
char *token = strtok(str, " ");
while (token != NULL) {
    printf("%s\n", token);
    token = strtok(NULL, " ");
}

输出内容:

Hello
World

sprintf()

sprintf()函数用于将格式化的数据写入字符串。该函数需要一个字符串作为参数,并返回写入的字符数。函数申明如下:

#include <stdio.h>

int sprintf(char *str, const char *format, ...);

使用示例:

char str[50];
int num = 123;
sprintf(str, "Integer: %d", num);
printf("%s\n", str);

输出内容:

Integer: 123

snprintf()

snprintf()函数用于将格式化的数据写入字符串。该函数需要一个字符串作为参数,并返回写入的字符数。与上面的区别是,该函数会在写入的字符数达到指定的最大值时停止写入。函数申明如下:

#include <stdio.h>

int snprintf(char *str, size_t size, const char *format, ...);

使用示例:

char str[50];
int num = 123;
snprintf(str, 50, "Integer: %d", num);
printf("%s\n", str);

输出内容:

Integer: 123

sscanf()

sscanf()函数用于从字符串中读取格式化的数据。该函数需要一个字符串作为参数,并返回成功匹配的数据项数。函数申明如下:

#include <stdio.h>

int sscanf(const char *str, const char *format, ...);

使用示例:

char str[] = "Hello World";
char buf[50];
sscanf(str, "%s", buf);
printf("%s\n", buf);

输出内容:

Hello

字符串拼接工具函数

根据以上库函数封装一些字符串常见的操作函数,便于调用,避免重复造轮子。

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

// 将整数转换为字符串
char* intToString(int num) {
    // 估算数字的位数
    int len = snprintf(NULL, 0, "%d", num) + 1;
    char* str = (char*)malloc(len * sizeof(char));
    snprintf(str, len, "%d", num);
    return str;
}

// 将浮点数转换为字符串
char* floatToString(float num) {
    // 估算数字的位数
    int len = snprintf(NULL, 0, "%f", num) + 1;
    char* str = (char*)malloc(len * sizeof(char));
    snprintf(str, len, "%f", num);
    return str;
}

// 拼接两个字符串
char* concatenateStrings(const char* str1, const char* str2) {
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    char* result = (char*)malloc((len1 + len2 + 1) * sizeof(char));
    strcpy(result, str1);
    strcat(result, str2);
    return result;
}
// 在指定位置插入字符串
char* insertString(const char* original, const char* insertion, int position) {
    int lenOriginal = strlen(original);
    int lenInsertion = strlen(insertion);
    if (position < 0 || position > lenOriginal)
        return NULL;

    char* result = (char*)malloc((lenOriginal + lenInsertion + 1) * sizeof(char));
    strncpy(result, original, position);
    result[position] = '\0';
    strcat(result, insertion);
    strcat(result, original + position);
    return result;
}

// 替换字符串中的子串
char* replaceString(const char* original, const char* target, const char* replacement) {
    int lenOriginal = strlen(original);
    int lenTarget = strlen(target);
    int lenReplacement = strlen(replacement);
    if (lenTarget == 0)
        return NULL;

    char* result = (char*)malloc((lenOriginal + 1) * sizeof(char));
    const char* ptr = original;
    char* pos = strstr(ptr, target);
    if (pos == NULL)
        return strcpy(result, original);

    int lenPrefix = pos - ptr;
    strncpy(result, ptr, lenPrefix);
    result[lenPrefix] = '\0';

    while (pos != NULL) {
        strcat(result, replacement);
        ptr = pos + lenTarget;
        pos = strstr(ptr, target);

        if (pos != NULL) {
            lenPrefix = pos - ptr;
            strncat(result, ptr, lenPrefix);
            result[lenPrefix + strlen(result)] = '\0';
        }
    }

    strcat(result, ptr);
    return result;
}

// 去重字符串中的重复字符
void removeDuplicates(char* str) {
    if (str == NULL)
        return;

    int len = strlen(str);
    if (len <= 1)
        return;

    int index = 1; // 记录非重复字符的位置

    for (int i = 1; i < len; i++) {
        bool isDuplicate = false;

        for (int j = 0; j < index; j++) {
            if (str[i] == str[j]) {
                isDuplicate = true;
                break;
            }
        }

        if (!isDuplicate) {
            str[index] = str[i];
            index++;
        }
    }

    str[index] = '\0'; // 添加字符串结束符
}

// 去除字符串中的多余字符(如 \0、\n、\t)
void removeExtraCharacters(char* str) {
    if (str == NULL)
        return;

    int len = strlen(str);
    if (len == 0)
        return;

    int index = 0;

    for (int i = 0; i < len; i++) {
        if (str[i] != '\0' && str[i] != '\n' && str[i] != '\t') {
            str[index] = str[i];
            index++;
        }
    }

    str[index] = '\0'; // 添加字符串结束符
}

result[index] = '\0';
return result;
// 拼接字符串和整数
char* concatenateStringAndInt(const char* str, int num) {
    char* intStr = intToString(num);
    char* result = concatenateStrings(str, intStr);
    free(intStr);
    return result;
}

// 拼接字符串和浮点数
char* concatenateStringAndFloat(const char* str, float num) {
    char* floatStr = floatToString(num);
    char* result = concatenateStrings(str, floatStr);
    free(floatStr);
    return result;
}

上述代码中定义了以下函数集:

intToString: 将整数转换为字符串。
floatToString: 将浮点数转换为字符串。
concatenateStrings: 拼接两个字符串。
insertString: 在指定位置插入字符串。
replaceString: 替换字符串中的子串。
removeDuplicates: 去重字符串中的重复字符。
removeExtraCharacters: 去除字符串中的多余字符(如 \0、\n、\t)。
concatenateStringAndInt: 拼接字符串和整数。
concatenateStringAndFloat: 拼接字符串和浮点数。

推荐一个零声学院免费教程,个人觉得老师讲得不错,分享给大家,有兴趣可以去看看:[Linux,Nginx,DPDK等技术内容,点击立即学习: 链接.文章来源地址https://www.toymoban.com/news/detail-765195.html

到了这里,关于C语言字符串拼接函数集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Jetpack】DataBinding 架构组件 ② ( 字符串拼接函数 | 绑定点击事件函数 | DataBinding 布局中使用 import 标签导入 Java、Kotlin 类 )

    在上一篇博客中 , 遇到 在 DataBinding 布局 中 , 向 TextView 组件设置 int 类型数据的情况会报错 , 最终的处理方式是 将 int 类型的变量 student.age 通过 String.valueOf 函数转为 字符串 类型 , 设置到 TextView 组件中 ; 此外 , 还可以 在 数据类 中定义 字符串拼接函数 , 直接在 DataBinding 布局

    2023年04月08日
    浏览(74)
  • C语言:字符函数和字符串函数(一篇拿捏字符串函数!)

    目录 求字符串长度: 1. strlen(字符串长度) 长度不受限制函数: 2. strcpy(字符串拷贝) 3. strcat(字符串追加) 4. strcmp(字符串比较) 长度受限制函数: 5. strncpy(字符串拷贝) 6. strncat(字符串追加) 7. strncmp(字符串比较) 字符串查找: 8. strstr(查找字符串子串) 9. strtok(字符串分割) 错误信

    2024年02月10日
    浏览(83)
  • 【C语言】字符函数,字符串函数,内存函数

    大家好!今天我们来学习C语言中的字符函数,字符串函数和内存函数。 目录 1. 字符函数 1.1 字符分类函数 1.2 字符转换函数 1.2.1 tolower(将大写字母转化为小写字母) 1.2.2 toupper(将小写字母转化为大写字母) 2. 字符串函数 2.1 字符串输入函数 2.1.1 gets() ​2.1.2 fgets() 2.2 字符串

    2024年02月10日
    浏览(46)
  • 【C语言】字符函数和字符串函数

      目录 1.求字符串长度strlen 2.长度不受限制的字符串函数 字符串拷贝strcpy 字符串追加strcat 字符串比较strcmp 3.长度受限制的字符串函数介绍strncpy strncat ​编辑strncmp 4.字符串查找strstr 5.字符串分割strtok 6.错误信息报告 strerror perror 7.字符分类函数 8.字符转换函数  9.内存操作函

    2024年02月12日
    浏览(43)
  • C语言—字符函数和字符串函数

    C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串中或者字符数组中。字符串常量适用于那些对它不做修改的字符串函数。 strlen函数的介绍 strlen函数用于求字符串的长度 注: 字符串已经 ‘\\0’ 作为结束标志,strlen函

    2024年02月07日
    浏览(37)
  • C语言——字符函数和字符串函数

    assert.h 头文件定义了宏assert(),⽤于在运⾏时确保程序符合指定条件,如果不符合,就报 错终⽌运⾏。这个宏常常被称为 “断⾔” 。 assert() 宏接受⼀个表达式作为参数。如果该表达式为真(返回值⾮零), assert() 不会产⽣任何作⽤,程序继续运⾏。如果该表达式为假(

    2024年04月25日
    浏览(47)
  • C语言 - 字符函数和字符串函数

    目的:学习主要常见字符串和字符串函数,及其部分函数的模拟过程。 C语⾔中有⼀系列的函数是专⻔做字符分类的,也就是⼀个字符是属于什么类型的字符的。 这些函数的使⽤都需要包含⼀个头⽂件是 ctype.h。 这些函数的使⽤⽅法⾮常类似,我们就讲解⼀个函数的事情,其

    2024年02月05日
    浏览(66)
  • C语言:字符函数和字符串函数

    C语言:初识C语言 C语言:分支语句和循环语句 C语言:函数 C语言:数组 C语言:操作符详解 C语言:指针详解 C语言:结构体 C语言:数据的存储 今天来盘一下字符函数和字符串函数。 C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常

    2024年02月11日
    浏览(59)
  • 进阶C语言-字符函数和字符串函数

    ✅注意事项: 字符串以 \\\'\\0\\\' 作为结束标志, strlen函数 返回的是在字符串中 \\\'\\0\\\' 前面出现的字符个数(不包括 \\\'\\0\\\' ) 参数指向的字符串必须以 \\\'\\0\\\' 结束 注意函数的返回值是 size_t ,是无符号的 ✅运行示例: 🔭1.1.1strlen函数的模拟实现 📖1.计数器法 assert函数 的 作用 是断言,

    2024年02月04日
    浏览(39)
  • 【c语言】字符函数与字符串函数(上)

    大家好呀,今天给大家分享一下字符函数和字符串函数,说起字符函数和字符串函数大家会想到哪些呢??我想到的只有求字符串长度的strlen,拷贝字符串的strcpy,字符串比较相同的strcmp,今天,我要分享给大家的是我们一些其他的字符函数和字符串函数,跟着小张一起去看看吧

    2024年02月13日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包