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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!