C语言学习笔记—字符串操作常用的函数strcpy();\strncpy();\strcat();\strcmp();\strchr();\strstr();\strtok();\strlwr();

使用这些字符串函数时头文件要记得包含<string.h>

puts&&gets

puts的作用:将字符串输出到终端,puts函数一次只能输出一个字符串,字符串中可以包括转义字符。
gets的作用:gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取。

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

int main()
{
	char *str = "aoligei!";
    char *pstr;//野指针,会造成非法内存访问造成段错误
    //char pstr[128];
	pstr = (char *)malloc(128);//有纸才能写字,申请空间
    
    puts(str);//自动换行
    printf("%s\n",str);
    //输入字符串
    printf("请输入字符串\n");
   
    gets(pstr);
    puts(pstr);
	system("pause");
	return 0;
}

  1. puts()函数只能输出字符串, 不能输出数值或进行格式变换。
  2. 可以将字符串直接写入puts()函数中输出。
  3. puts 和 printf的用法一样,puts()函数的作用与语句“printf("%s\n",s);的作用相同。
  4. puts在输出字符串后会自动输出一个回车符。
memset

初始化函数
作用:作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。

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

int main()
{
	
    char *pstr;
    //1.初始化对象的开头 2.初始化成什么字符 3.多大
    memset(pstr,"\0", 128);
	
    //输入字符串
    printf("请输入字符串\n");
    gets(pstr);
    puts(pstr);
	system("pause");
	return 0;
}

字符串拷贝函数 strcpy && strncpy

strcpy 原型:char strcpy(char dest, const char *src);
strcpy 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间

strncpy原型:char *strncpy(char *destinin, char *source, int maxlen);
strncpy功能:表示把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中,并返回被复制后的dest。(复制源前n个字符到目标)

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

int main()
{
	//原型声明:char *strcpy(char* dest, const char *src);
	char destSrc[128] = {'\0'};
    char *strSrc = "pretty!";
    //方式一
    strcpy(destSrc,strSrc);
    puts(destSrc);
    puts(strSrc);
    
    //方式二
    strcpy(destSrc,"奥里给");
    puts(destSrc);
    puts(strSrc);
    memset(destSrc,'\0',sizeof(destSrc)/sizeof(destSrc[0]));
    strncpy(destSrc,strSrc,2);
    puts(destSrc);
    system("pause");
	return 0;
}

字符串拼接函数strcat

char *strcat(char *dest, const char *src);
功能:把src所指向的字符串(包括“\0”)复制到dest所指向的字符串后面

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

int main()
{
	//原型声明:char *strcpy(char* dest, const char *src);
	char destSrc[128] = {'\0'};
    char *strSrc = "pretty!";
    
    char test[] = "牛逼:";
    strcat(test,strSrc);
    puts(test);
    
	system("pause");
	return 0;
}

字符串比较函数strcmp

extern int strcmp(const char *s1,const char *s2);
功能:strcmp函数是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数

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

int main()
{
	
    char *s1 = "1234";
    char *s2 = "123";
    int ret;
    ret = strcmp(s1,s2);
    printf("%d\n",ret);
	system("pause");
	return 0;
}

查找字符函数strchr

功能:在一个字符串中搜索第一次出现的查询字符的位置。如果字符串中不包含该字符则返回NULL空指针.

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

int main()
{
	char *p = "Ken";
    char c = 'X';
    char *z = NULL;
    z = strchr(p,c);
    if(z == NULL)
        {
        printf("1未找到!\n");
        }else
        {
			printf("1已找到!\n");
            puts(z);
        }
	system("pause");
	return 0;
}

查找字符串函数strstr();

char *strstr(const char *haystack, const char *needle)
功能: 在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 ‘\0’。

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

int main()
{
	char *p = "ZhangSan";
    char c = 'X';
    char *z = NULL;
   
    char *x ="in" ;
    z = strstr(p,x);
    if(z == NULL)
        {
        printf("2未找到!\n");
        }else
        {
			printf("2已找到!\n");
            puts(z);
        }
	system("pause");
	return 0;
}

转为小写的函数strlwr();

extern char *strlwr(char *s);
功能:strlwr函数的功能是将字符串中的S参数转换为小写形式。只转换s参数中出现的大写字母,不改变其它字符。返回指向s参数的指针。

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

int main()
{
	
	char str[] = "ZhangSAN";//windows环境下要用数组定义方式
	puts(strlwr(str));
	
	system("pause");
	return 0;
}

转为大写的函数strupr();

原型:extern char *strupr(char *s);
说明:只转换s参数中出现的大写字母,不改变其它字符。返回指向s参数的指针。

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

int main()
{
	char str[] = "ZhangSAN";//windows环境下要用数组定义方式
	puts(strupr(str1));
	
	system("pause");
	return 0;
}

字符串分割函数strtok();

原型:char *strtok(char s[], const char *delim);
功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。

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

int main()
{
	
        char str1[] = "ZhangSan";
        puts(strupr(str1));
        char *pp[10];
        int i=0;
        char str2[] = "Zhang,San,hello";
        //获取第一个字符串
        z = strtok(str2,",");
        pp[0] = z;
        puts(z);
        while(1)
        {
			i++;
			z = strtok(NULL,",");
            pp[i] = z;
            
            if(z!=NULL)
            {
				puts(z);
            }else
            {
				printf("字符串分割结束!\n");
				break;
            }
        }
        int j;
        for(j=0;j<=i;j++)
        {
        puts(pp[j]);
        }
        
        /*//获取第二个字符串
        z = strtok(NULL,",");
        puts(z);
        //获取第三个字符串
        z = strtok(NULL,",");
        puts(z);*/
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值