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;
}
头文件:#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 。
#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;
}
功能: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] … );
参数列表
buffer:
char型指针,指向将要写入的字符串的缓冲区。
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;
}