使用此函数时需注意头文件“#include
使用puts和gets是需要头文件“#include
1,输入字符串函数:
格式:gets(字符数组名字)
char str[30];
gets(str);
输入“students and book”(个个单词之间有一个空格)这会存储到str中,且会在17个字符后面自动添加“\0”,“\0”也会存储在str中。
2,输出字符串:
格式:puts(字符数组名字)
char str[20]={"students and book"};
puts(str);
此时输出结果:
students and book
3,连接字符串:
格式:stract(字符数组名字1,字符数组名字2)
使用strcat时注意:字符数组1定义的长度必须足够长,以便可以容纳后面的数组。连接字符,也可以连接的是字符串常量。
char str1[30]={"students and"};
char str2[30]={"book"};
strcat(str1,str2);
puts(str1);
strcat(str2,"and program");
puts(str2);
此时输出结果:
students and book
book and program
此外还有:stract(字符数组名字1,字符数组名字2,n) 意思是将字符串2前n个字符连接到字符串1后面。
4,赋值字符串函数
格式:strcpy(字符数组名字1,字符数组名字2)
char str1[60],str2[40]="project";
str1=str2;//(这个是错误的写法),正确strcpy(str1,str2)
str1="students";//(错误),正确的strcpy(str1,"students")
注意字符串1必须定义足够长;
int i;
char str1[10]="abcdefjhi";
char str2[10]="ABCDEF";
strcpy(str1,str2);
puts(str1);
puts(str2);
for(i=0;i<10;i++)
printf("%c",str[i]);
输出结果如下
ABCDEF
ABCDEF
A,B,C,D,E,F,,h,i,,
5,比较字符串
格式:stract(字符数组名字1,字符数组名字2)
以下为比较方法阅读对比;在系统中比较,从前到后,就是比较他们所存储的ASCII码。
strcmp("abc","aacbdkl") >0
strcmp("abc","abc") =0
strcmp("abc","abxy") <0
strcmp("abxy","abcd") >0
6,求字符串长度
格式:strlen(字符串)
char str1[10]="abc";
char str2[10]={'a','b','c','\0'};
char str3[10]={'a','b','c','\0','d','e','\0'};
此时strlen(str1)= strlen(str2)= strlen(str3)= 3
7,大写字母转换小写字母
格式:strlwr(字符串)
char str[10]={"ABCDedf"};
printf("%s",strlwr(str));
输出:abcdef
小写转大写上同
格式:strupr(字符串)
8,memcmp()
格式:int memcmp ( const void * ptr1, const void * ptr2, size_t num )
效果跟strcmp()类似
如果(str1>str2)返回一个(>0)的数
如果(str1=str2)返回一个(=0)的数
如果(str1
float arr1[] ={1.0,2.0,3.0,4.0};
float arr2[] ={1.0,3.0,5.0,};
int compare = memcmp(arr1,arr2,8);//比较两个数组前8个字节的元素
printf("%d",compare);
输出结果小于0
9,memmove()
格式:void * memmove ( void * destination, const void * source, size_t num )
跟memcpy()不同的地方在于memmove()可以复制source内部的字符串
int i = 0;
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
memmove(arr+4, arr,20);//从arr数组第1个元素开始替换20个字节(5个元素)到arr数组第5个元素
for(i = 0;i < 10;i++)
{
printf("%d",arr[i]);
}
输出结果12341234510
10,memcpy()
格式:void * memcpy ( void * destination, const void * source, size_t num )
从 source 指定的内存块中复制 num 个字节到 destination 指定的内存块中
返回的是指针变量destination
复制的是字节,需要注意数据类型
不能复制source自身的字符串
int arr1[10] = {1,2,3,4,5,6,7,8,9,10};
int arr2[10] = {0};
int i = 0;
memcpy(arr2, arr1, 20);//20个字节,int类型4个字节一个元素,复制了5个元素
for(i = 0;i < 10;i++)
{
printf("%d",arr2[i]);
}
输出结果1234500000
11,strstr()
格式:char * strstr ( const char *, const char * )
寻找str2是否在str1中出现,出现则返回地址
char str[20] = "abcedefghi";
char str2[20] = "defg";
char * ret = strstr(str1, str2);//需要一个指针变量来接收返回的地址
if(ret == NULL)
{
printf("没有找到");
}
else
{
printf("%s",ret);
}
输出结果defghi