C语言 字符串操作函数

2023-12-13 08:31:26

strncpy()

用于将一个字符串的一部分拷贝到另一个字符串中。

char* strncpy(char* destination, const char* source, size_t num);

参数:
	destination 是目标字符串的指针,表示将要拷贝到的位置
	source 是源字符串的指针,表示要拷贝的字符串
	num 是要拷贝的最大字符数。

strncat()

用于将一个字符串的指定长度追加到另一个字符串的末尾。

char* strncat(char* destination, const char* source, size_t num);

参数:
	destination 是目标字符串
	source 是要追加的源字符串
	num 是要追加的字符个数。

strncmp()

用于比较两个字符串的指定长度

int strncmp(const char* str1, const char* str2, size_t num);

参数:
	str1 和 str2 分别是要进行比较的两个字符串
	num 是要比较的字符的最大个数。

strchr()

用于在一个字符串中查找指定字符的第一次出现。

char* strchr(const char* str, int c);

参数:
	str 是要在其中进行搜索的字符串
	c 是要查找的字符的整数值。

strstr()

用于在一个字符串中查找另一个字符串的第一次出现。

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

参数:
	haystack 是要在其中进行搜索的字符串
	needle 是要查找的目标字符串。

strtok()

用于将字符串分割为多个子字符串

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

参数:
	str 是一个指向待分割的字符串的指针(可同时填入多种分割字符 ”# ?!...“)
	delimiters 是一个指向包含分割符的字符串的指针。

sprintf

用于将格式化的数据写入字符串中。

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

参数:
	str表示要将格式化的数据写入到该数组中
	format 是一个格式化字符串,用于指定输出的格式和要插入的数据,后面可以跟上要插入的数据,根据格式字符串的要求。

main函数 参数

int main(int argc, char *argv[]);

参数:
	argc代表命令行参数的数量,程序名字本身算一个参数
	argv是命令行参数的字符串数组
	argc也可以用来描述第二个参数argv数组的成员数量,argv数组的每个成员都是char *类型

其他

利用 strstr 标准库函数找出一个字符串中substr出现的次数。
#include <stdio.h>
#include <string.h>

int main(void)
{
    int n = 0;
	char* p = "11abcd111122abcd333abcd3322abcd3333322qqq";
	while ((p = strstr(p, "abcd")) != NULL)
	{
		// 能进来,肯定有匹配的子串
		// 重新设置起点位置
		p = p + strlen("abcd");
		n++;

		if (*p == 0) //如果到结束符
		{
			break;
		}
	}
	printf("n = %d\n", n);

	return 0;
}
计算给定的字符串中剔除了两端空白之后剩余的子字符串的长度。
#include <stdio.h>
#include <string.h>

int fun(char* p, int* n)
{
    if (p == NULL || n == NULL)
    {
        return -1;
    }

    int begin = 0;
    int end = strlen(p) - 1;
    //从左边开始
    //如果当前字符为空,而且没有结束
    while (p[begin] == ' ' && p[begin] != 0)
    {
        begin++; //位置从右移动一位
    }
    //从右往左移动
    while (p[end] == ' ' && end > 0)
    {
        end--; //往左移动
    }
    if (end == 0)
    {
        return -2;
    }
    //非空元素个数
    *n = end - begin + 1;

    return 0;
}

int main(void)
{
    char* p = "      abcddsgadsgefg      ";
    int ret = 0;
    int n = 0;

    ret = fun(p, &n);
    if (ret != 0)
    {
        return ret;
    }
    printf("非空字符串元素个数:%d\n", n);

    return 0;
}
字符串逆置(翻转字符串)。
//自己实现
#include <iostream>
#include <cstring>

using namespace std;

int main()
{
	char arr[] = {"123456789"};

	//字符串逆置
	for(int i=0,j=strlen(arr)-1; i<j; i++,j--)
	{
		arr[i] = arr[i]^arr[j];
		arr[j] = arr[i]^arr[j];
		arr[i] = arr[i]^arr[j];
	}

	cout <<arr;
}

//教程方法
#include <stdio.h>
#include <string.h>

int inverse(char* p)
{
    if (p == NULL)
    {
        return -1;
    }
    char* str = p;
    int begin = 0;
    int end = strlen(str) - 1;
    char tmp;

    while (begin < end)
    {
        //交换元素
        tmp = str[begin];
        str[begin] = str[end];
        str[end] = tmp;

        begin++;  // 往右移动位置
        end--;    // 往左移动位置
    }

    return 0;
}

int main(void)
{
    //char *str = "abcdefg"; // 常量字符串,内容不允许修改
    char str[] = "abcdef";
    int ret = inverse(str);
    if (ret != 0)
    {
        return ret;
    }
    printf("翻转之后的字符串: %s\n", str);

    return 0;
}

详细教程可转

爱编程的大丙

在这里插入图片描述

文章来源:https://blog.csdn.net/CYS_2020/article/details/134949350
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。