4.c中常用的字符串处理函数

1>gets()puts()//字符串的键盘读取和屏幕输出

gets()用于字符串的读取,使用行缓冲,从键盘输入一段字符并按下回车键时,开始从键盘缓冲区读取,并丢弃换行符\n,自动添加空字符\0.gets()的缺点是当输入的字符数超过了用来存放的字符型数组的大小,就会溢出到相邻的内存中。

puts()用于字符串的屏幕输出,并于结尾自动添加换行符\n.


2>strcat()

strcat(s1,s2)字符串s2中的内容添加到字符串s1的结尾,返回指向s1的指针。示例:

#include<stdio.h>
#include<string.h>//声明strcat()函数
int main(void)
{
	char ch[]={"Welcom t"};
	char * p="o China!";
	strcat(ch,p);
	puts(ch);
	return 0;
}
输出:Welcome to China!

3>strncat()

strncat(s1,s2,n)是strcat(s1,s2)的安全版本,n用于控制复制添加的字符数量,添加字符满n个或遇到s2中的结尾空字符\0时结束添加。示例:

#include<stdio.h>
#include<string.h>//声明strncat()函数
int main(void)
{
	char ch[20]={"one two three"};
	char * p=" four five six";
	strncat(ch,p,7);
	puts(ch);
	return 0;
}
输出: one two three four f

4>strcmp()

strcmp(s1,s2)比较两个字符串s1、s2的内容是否相同,关于返回值:

c中:

当s1<s2时,返回值= -1 
当s1==s2时,返回值= 0 
当s1>s2时,返回值 = 1 

c++ 中: 
当s1<s2时,返回值小于0 
当s1==s2时,返回值等于0 
当s1>s2时,返回值 大于0 
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如: 
"A"<"B" "a">"A" "computer">"compare" 
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。

代码示例:

#include<stdio.h>
#include<string.h>//声明strcmp()函数
#define ANSWER "apple"//设置标准答案
int main(void)
{
	char ch[20]={0};
	puts("请输入苹果的英文单词:");
	gets(ch);
	while(strcmp(ANSWER,ch)!=0)//对比输入和标准答案
	{
         puts("错误!请重新输入:");
		 gets(ch);
	}
	puts("完全正确!");
	return 0;
}

5>strncmp()

strncmp(s1,s2,n)是strcmp(s1,s2)的加强版,用于比较字符串s1、s2的前n个字符。代码示例:

#include<stdio.h>
#include<string.h>//声明strncmp函数
#include<stdlib.h>
#define SIZE 5
int main(void)
{
	 char ch[5][9] = { "ability","absent","abandon","addtion","apple" };
	int count = 0;
	puts("所以这里面ab开头的单词有:");
	for (int i = 0; i<SIZE; i++)
	{
		if (strncmp(ch[i], "ab", 2) == 0)
		{
			printf("%s ", ch[i]);
			count++;
		}
	}

	printf("共%d个!\n", count);

	system("pause");
	return 0;
}

6> strcpy()//字符串的复制函数
例如strcpy(s1,s2)的作用是把字符串s2的内容全部存入s1中,strcpy(s1+5,s2)则是,字符串s1中的前5个字符不动,从其第六个字符开始全部丢弃,其位置用于存放字符串s1的内容。其实参数s1和s2的性质是指针,分别指向字符串s1和s2的第一个字符位置。并且如果s2的长度大于s1,当s1中的位置满了之后,s2中的剩余内容会溢到相邻的内存中,由于s2全部复制到s1之后,会在s1的末尾添加空字符结尾,所以打印s1看起来会没一点问题,尽管此时s1的实际长度已经改变。但这种情况可能会导致原来s1的相邻内存的信息被覆盖,因此存在隐患。

7> strncpy()
是strcpy()的安全版本,多了一个参数来控制复制的字符个数。例如strncpy(s1,s2,n)表示把字符串s2的前n个字符存放到s1中。

8> strchr()//寻找字符串中某个字符第一次出现的位置,返回指向其位置的指针
例如strchr(s1,int c)返回字符c在字符串s1中第一次出现的位置指针。

9>strlen()

strlen()的作用是测量字符串的长度,不含结尾符\0,参数可以是字符串名、字符串数组名、指针,它的工作原理是计算从开始到遇到第一个'\0'位置的字符数。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值