C语言的基本概念2_2 字符串处理函数

1) gets();   // 输入字符串

       puts();   // 输出字符串  系统自动加上 \n(实际上把'\0' 自动换成'\n')

      strlen();  // 计算字符串本身长度

 

# include "stdio.h"
int main()
{
	char str[10];
	gets(str);            // 输入完后直接 按回车(enter)
	puts(str);            // 输出后自动换行 因为这个函数 (我输入abc,其实是4个字符,还有一个是\0,再执行puts函数时,把\0自动转换成\n)
	printf("%d\n",strlen(str));   // 计算字符串的实际长度,不包括 '\0'
}

 

2)_1   strcat 字符串连接函数

# include "stdio.h"
int main()
{
	char str1[20]="abcde";
	char str2[7]="abd";

	printf("%s\n",strcat(str1,str2));     // 有几点要注意:1)它是把str2的内容跟在str1后面,在结束时,自动加上 '\0'
	                                      //               2)由于1),所以 str1[],[]里的数字要足够的大,要足够地容纳新的字符串
	printf("%s\n",str1);               // 为什么输出 abcdeabd 因为 拼接完后,存在了str1中
	printf("%s\n",str2);               // str2,不变,因为它不是作为被 容纳的,只有被容纳的,才会改变

	return 0;
}

对strcat 理解透了,再看这个 (也可以作为了解)

# include "stdio.h"

int main()
{
	char str1[20]="abcde";
	char str2[7]="abd";
	char str3[50];
	printf("%s\n",strcat(str3,str1));     // 出现这种问题,是跟内存有关,猜测:未初始化,里面存的是乱码,对于指令来说,我只要找到地址,我就可以输出,至于是不是你想要的结果,就
	                                      // 不关我的事了,对于vc++6.0 来说,我执照你的指令执行,因为我的内存里有东西,我就输出什么,调试是人写的,而且,不同的编译环境,产生
//	printf("%s\n",str3);              	  // 不一样的问题,但大体是内存这块出问题
//	printf("%s\n",str1);  
//	printf("%s\n",str2); 

	return 0;
}

 

# include "stdio.h"
int main()
{
	char str1[20]="abcde";
	char str2[7]="abd";
	char str3[50]="5";
	printf("%s\n",strcat(str3,str1));      // 解决方法,str3未赋值前,单元里面存的东西乱码,我赋初值不就行了,
	printf("%s\n",strcat(str3,str2));                                       
	printf("%s\n",str3);              	   
	printf("%s\n",str1);  
	printf("%s\n",str2); 

	return 0;
}

 

 

2)_2   strcpy    字符串复制函数   (我的理解,是为了解决strcat 不能解决的乱码问题,从而发明的这个函数)

            strncpy   (更灵活)

// 图片1
# include "stdio.h"
int main()
{
	char str1[40];
	char str2[]="I love ";
	printf("%s\n",strcpy(str1,str2));
	printf("%s\n",str1);
	printf("%s\n",strcpy(str1,"China"));   // 效果与想象中的不一样  strcpy(str1,"China") 改为 strcat  想实现 I love China的
//	printf("%s\n",strcat(str1,"China"));
  
	return 0;
}









// 图片2

# include "stdio.h"
int main()
{
	char str1[40];
	char str2[]="I love ";
	printf("%s\n",strcpy(str1,str2));
	printf("%s\n",str1);
	printf("%s\n",strcat(str1,"China"));   // 本行改
//	printf("%s\n",strcat(str1,"China"));
  
	return 0;
}


// 图片3
# include "stdio.h"
int main()
{
	char str1[40];
	char str2[]="I love ";
	printf("%s\n",strcpy(str1,str2));
	printf("%s\n",str1);
	printf("%s\n",strcpy(str1,"China"));   // 把下面一行注释去掉,不是想要的结果I love China
	printf("%s\n",strcat(str1,"China"));
  
	return 0;
}



// 图片4

# include "stdio.h"
int main()
{
	char str1[40];
	char str2[]="I love ";
	printf("%s\n",strcpy(str1,str2));
	printf("%s\n",str1);
	printf("%s\n",strcat(str1,"China"));   // 连接 两个字符串
	printf("%s\n",strcpy(str1,"China"));   // 把下面最下面一行提到本行的前面,是想要的结果I love China
	                                       // 你们肯定很疑惑,这个跟 strcpy定义有关,它是从str1的下标为0处,开始复制的,直到它本身结束,才完,

  
	return 0;
}

 

 

 

 

strncpy  作用:从下标为 0 的地方 开始 赋值

# include "stdio.h"
int main()
{
	char str1[49]="abdcdf";
	char str2[15]="123456";
	printf("%s\n",strncpy(str1,str2,2));
	printf("%s\n",str1);
	printf("%s\n",str2);
	return 0;
}

3) strcmp  字符串比较函数

# include "stdio.h"
int main()
{
	char str1[49]="abdcdf";
	char str2[15]="abdcdf"; 
	printf("%d\n",strcmp(str1,str2));           // 规则:从左至右逐个比较 ascii   字符串 1 ==  字符串 1 ,值为0 
	printf("%d\n",strcmp("def","abcd"));        //  字符串 1 >  字符串 1 ,值为正整数
	printf("%d\n",strcmp("d","abcd"));          //  字符串 1 >  字符串 1 ,值为正整数    (只要有一个大就 OK 了)最终值就出来了

    printf("%d\n",strcmp("ab","abcd"));         //  字符串 1 <  字符串 1 ,值为负整数

	return 0;
}

 

 

 

4)strlwr  转为小写函数

     strupr  转为大写函数

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值