关于字符串常考函数

2 篇文章 0 订阅

1、strcpy

原型声明:char *strcpy(char* dest, const char *src);
头文件:#include < string.h> 和 #include <stdio.h>
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的 地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的 指针
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
	char *str = "hello";
	char *str1 = (char *)malloc(100);
	strcpy(str1,str);
	printf("%s",str1);
	return 0;
}


2、strstr

头文件:#include <string.h

功能:搜索一个字符串在另一个字符串中的第一次出现。找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;如果未找到所搜索的字符串,则返回NULL

strstr(string,search) : string:规定被搜索的字符串。search:规定所搜索的字符串

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
	char *str = "hello";
	char *str1 = "I say hello xiaopang";
	char *p = strstr(str1,str);
	printf("%s",p);
	return 0;
}


3、strcat

头文件:#include <string.h

功能:将两个char类型链接

原型:char *strcat(char *dest,char *src); 把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
	char *str = "hello";
	char *str1 = "I say hello xiaopang";
	strcat(str1,str);
	printf("%s\n",str1);
	return 0;
}
输出错误,把str接在str1后面,必须保证str1空间足够大,可以方向两个字符串的长度和


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
	char *str= "hello";
	char str1[100] = "I say hello xiaopang ";
	strcat(str1,str);
	printf("%s\n",str1);
	return 0;
}
此时输出正确


4、memset

头文件:<memory.h>或<string.h>

void *memset(void *s, int ch,  size_t n);
函数解释:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的 结构体数组进行清零操作的一种最快方法
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
	char str[10]= "hello";
	printf("%s\n",str);
	memset(str,'\0',strlen(str));
	printf("%d,%d,%d,%d\n",str[0],str[1],str[9]);
	return 0;
}


5、memcpy

功能:memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。函数返回指向dest的指针

头文件:#include<string.h>

void *memcpy(void *dest, const void *src, size_t n);

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
	char str[10]= "hello";
	char str1[10] = "123";
	void *p = memcpy(str1,str,sizeof(char)*6);
	printf("%s\n%s\n",str1,p);
	return 0;
}

6、puts

puts()函数用来向标准输出设备(屏幕)写字符串并换行

(1). puts()函数只能输出字符串, 不能输出数值或进行格式变换。
(2). 可以将 字符串直接写入puts()函数中。如:
puts("Hello, world!");
(3). puts 和 printf 的用法一样,puts()函数的作用与语句“printf("%s\n",s);的作用相同。注意:puts在输出字 符串后会自动输出一个回车符。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
	char str[10]= "hello";
	char *p = "xiaopang";
	puts(str);
	puts(p);
	return 0;
}
7、gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取 从stdin流中读取 字符串 ,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer 指针 所指向的字符 数组 中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。
gets(s)函数与 scanf("%s",s)相似,但不完全相同,使用scanf("%s",s) 函数输入字符串时存在一个问题,就是如果输入
<span style="font-family: arial, 宋体, sans-serif; text-indent: 2em; background-color: initial;">了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。</span>
也就是说:gets()函数读取到\n(我们输入的回车)于是停止读取,但是它不会把\n包含到字符串里面去。然而,和它配合使用的puts函数,却在输出字符串的时候自动换行。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
	char str[10];
	char str1[10];
	gets(str);//可以接收空格
	scanf("%s",str1);//空格后内容不再接收
	puts(str);
	puts(str1);
	
	return 0;
}
8、sprintf
字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数

头文件 stdio.h

原型

int sprintf( char *buffer, const char *format, [ argument] … );

参数列表

bufferchar型指针,指向将要写入的字符串的缓冲区。
format:格式化字符串。
[argument].. .:可选参数,可以是任何类型的数据。
返回值:字符串长度( strlen
#include <stdio.h>

int main()
{
	char *str;
	sprintf(str,"%d",12);
	
	return 0;
}
错误,没有为str申请空间

#include <stdio.h>
#include <stdlib.h>
int main()
{
	char *str = (char *)malloc(100);
	char str1[20];
	sprintf(str,"%d",12);
	sprintf(str1, "%-4d %d",12,1234);
	printf("%s\n",str);
	printf("%s",str1);
	return 0;
}

9、sscanf

sscanf() - 从一个字符串中读进与指定格式相符的数据。

#include <stdio.h>
#include <stdlib.h>
int main()
{
	char *str = "0123456789";
	char buffer[10];
	sscanf(str,"%5s",buffer);
	puts(buffer);
	return 0;
}




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值