c语言字符串处理

c语言编程-字符串处理

1、字符串处理

1.1 字符串输入/输出

【输出】

  • puts 函数

puts()函数用来向标准输出设备(屏幕、显示器)输出字符串并自行换行。把字符串输出到标准输出设备,将’ \0 ‘转换为换行符’ \n ’

  • 测试
/* puts函数-字符串输出*/ 
void str_puts(char *str)
{
	int ret = 0;
	ret = puts(str);//把字符串输出到标准输出设备,并且将'\0'转换成'\n' 
	if(ret>=0)//成功返回值是一个非负数 
	{
		puts("success!");	
	}	
}
  • putchar 函数

putchar()函数可以把参数 c 指定的字符(一个无符号字符)输出到标准输出设备,其输出可以是一个字符,可以是介于 0~127 之间的一个十进制整型数(包含 0 和 127,输出其对应的 ASCII 码字符),也可以是用 char 类型定义好的一个字符型变量

  • 测试
/* putchar函数-输出一个字符*/ 
void str_putchar(void)
{
	putchar('A');	
}

【输入】

  • gets 函数

gets()函数用于从标准输入设备(譬如键盘)中获取用户输入的字符串

  • 测试
void Get_gets(void)
{
	char str[100] = {0};
	char *pstr = NULL;
	pstr = gets(str);
	puts(pstr);
}
  • getchar 函数

getchar()函数用于从标准输入设备中读取一个字符

  • 测试
void Get_getchar(void)
{
	char str[100] = {0};
	int i = 0;
	while(str[i-1]!='#')
	{
		str[i] = getchar();
		i++;
	}
	puts(str);
}
  • 总结:字符串输入输出的库函数非常多,在实际的编程之中需要根据实际情况来进行选择。
1.2 字符串长度
1.3 字符串拼接

【1.strcat】函数原型如下

#include <string.h>
char *strcat(char *dest, const char *src);

【参数说明】

  • dest:目标字符串
  • src:源字符串
  • 返回值:返回
    strcat会将源字符串追加到dest所指向的字符串末尾,所以必须要保证dest有足够的存储空间来存储两个字符串,否则会导致溢出错误:dest末尾的’\0’结束符会被覆盖,而src末尾的结束字符’\0’会被一起复制过去,最终的字符串只有一个’\0’。
  • 测试
static void Str_cat(void)
{
    char src[] = "zhangdan";
    char dest[100] = "tianjiangtao love ";
    strcat(dest, src);
    puts(dest);
}
  • 输出
tianjiangtao love zhangdan

【2.strncat】函数原型如下

#include <string.h>
char *strncat(char *dest, const char *src, size_t n);

  • strcat与strncat的区别在于,strncat可以指定源字符串追加到目标字符串的字符数量

【参数说明】

  • dest:目标字符串
  • src:源字符串
  • n:要追加的最大字符串数
  • 返回值:返回指向目标字符串dest的指针。
    如果源字符串src包含n个或更多个字符,则strncat()将n+1个字节追加到dest目标字符串。
  • 测试
static void str_Ncat(void)
{
    char src[] = "zhangdandan";
    char dest[100] = "tianjiangtao love ";
    strncat(dest, src, 8);
    puts(dest);
    strncat(dest,src,sizeof(src));
    puts(dest);
}
  • 输出
tianjiangtao love zhangdan
tianjiangtao love zhangdanzhangdandan
1.4 字符串拷贝
  • c语言库函数中提供了strcpy()函数和strncpy()函数用于实现字符串的拷贝。
    【1.strcpy】函数原型如下

#include <string.h>
char *strcpy(char *dest, const char *src);

【参数说明】

  • dest:目标字符串
  • src:源字符串
  • 返回值:返回指向目标字符串dest的指针
    strcpy()会把src(必须包含结束字符’\0’)指向的字符串复制(包含字符串结束字符)到dest,所以必须保证dest指向的内存空间足够大,能够容纳下src字符串,否则会导致溢出错误。
  • 测试:
static void str_cpy(void)
{
    char src[] = "zhangdandan l love you!";
    char dest[100] = {0};//初始化
    strcpy(dest, src);
    puts(dest);
}
  • 输出
zhangdandan l love you!

【2.strncpy】函数原型如下

#include <string.h>
char *strncpy(char *dest, const char *src, size_t n);

strncpy()与strcpy()的区别在于,strncpy()可以指定从源字符串src复制到目标字符串dest的字符数量。
【参数说明】

  • dest:目标字符串
  • src:源字符串
  • n:src中复制的最大字符串
  • 返回值:返回值指向目标字符串的dest的指针
    把src所指向的字符串复制到dest,最多复制n个字符,当n小于或等于src字符串长度的时候,复制不包括’\0’;当复制大于src的字符串长度时,则会将字符串的结束符号’\0’也一并拷贝进去,必须保证dest指向的内存空间足够大,否则拷贝的时候会导致溢出错误。
    【测试】
static void str_ncpy(void)
{
    char src[] = "zhangdandan l love you!";
    char dest[100] = {0};//初始化
    strncpy(dest, src, 18);
    puts(dest);
}
  • 输出
zhangdandan l love
1.5 字符串填充
  • 常用的就是memset(void *s, int c, size_t n)和bzreo(void *s, size_t n),使用方法略。
1.6 c 字符串比较
  • C 语言函数库提供了用于字符串比较的函数 strcmp()和 strncmp()
1.6.1【strcmp】函数原型如下

#include <string.h>
int strcmp(const char *s1, const char *s2);

【参数以及返回值说明】

  • s1:进行比较的字符串1
  • s2:进行比较的字符串2
    返回值:
    1.如果返回值小于0,则表示s1大于s2
    2.如果返回值大于0,则表示s1大于s2
    3.如果返回值等于0,则表示两个字符串相等
    进行比较时,主要是通过比较字符串中的字符对应的ASCII码的值,直到出现不同的字符或者某一字符串已经到达末尾(遇见了’\0’)。
    【测试略】
1.6.2【strncmp】函数原型如下

#include <string.h>
int strncmp(const char *s1, const char *s2, size_t n);

【参数以及返回值说明】

  • s1:参与比较的第一个字符串
  • s2:参与比较的第二个字符串
  • n:最多比较钱n个字符
    【返回值】返回值含义和strcmp()相同
    【测试略】
1.7 字符串查找
  • c语言库函数中也提供了一些用于字符串查找的函数
1.7.1 strchr函数
  • 使用strchr函数可以查找到给定字符串当中的某一个字符,函数原型如下:

#include <string.h>
char *strchr(const char *s, int c);

【参数说明】

  • s:给定的目标字符串
  • c:需要查找的字符

【返回值】

  • 返回字符c第一次在字符串中出现的位置,如果没有找到就返回NULL。
    字符串结束符’\0’也作为字符串的一部分,因此如果将参数指定为’\0’,则函数将返回指向结束符的指针,返回值指向这个位置,如果找不到字符c就返回NULL。

【测试】

static void str_chr(void)
{
    char src[] = "zhangdandan l love you!";
    char *p = NULL;
    p = strchr(src,'y');
    if(p!=NULL)
    {
        printf("%c\n",*p);
        printf("%ld\n",p - src);//字符第一次出现的位置
    }
}
  • 输出
y
19
1.7.2 strstr函数
  • 原型

#include <string.h>
char *strstr(const char *haystack, const char *needle);

【参数说明】

  • haystack:目标字符串
  • needle:需要查找的字符串

【返回值】

  • 如果包含,则返回该字符串首次出现的位置;否则返回NULL

【测试】

static void str_str(void)
{
    char src[] = "zhangdandan l love you!";
    char *p = NULL;
    p = strstr(src,"love");
    if(p!=NULL)
    {
        printf("%s\n",p);
        printf("%ld\n",p - src);//字符第一次出现的位置
    }
}
  • 输出
love you!
14
1.8 字符串与数字互相转换
1.8.1 字符串转数字
  • atoi()将字符串转换为int类型,原型如下:

#include <stdlib.h>
int atoi(const char *nptr);

【参数说明】

  • nptr:要转换的数字字符串

【返回值】

  • 返回转换之后得到的int类型数据
    只能用于转换十进制表示的数字字符串,0~9.

【测试】

static void str_atoi(void)
{
    char src[] = "5201314";
    int number = atoi(src);
    printf("%d\n",number);
}
  • 输出
5201314
1.8.2 数字转字符串(大部分略)
  • sprintf()

【测试】

static void int_str(void)
{
    int number = 5201314;
    char str[20] = {0};
    sprintf(str,"%d",number);
    printf("%s\n",str);
}

【输出】

5201314
1.9 给应用程序传参(略)
1.10 正则表达式(略)
1.11 c语言中使用正则表达式(略)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值