- strcpy(str1,str2);
原型:char strcpy(char dest, const char src);
功能:把含有’\0’结束符的字符串复制到另一个地址空间,返回值的类型为char。(将str2复制给str1)
示例:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[125] = "\0";//初始化,全部赋值为"\0"
strcpy(str1,"hello , nice to meet you");//将字符串"hello , nice to meet you"复制给str1
printf("%s\n",str1);//输出str1
char str2[155] = "this is WangXiaoming , who are you?";
printf("%s\n",str2);//先打印一下str2,
printf("*************************************************\n");
strcpy(str1,str2);//将str2复制给str1
puts(str1);//输出字符串str1
printf("**************\n");
puts(str2);//输出字符串str2,我们发现
return 0;
}
2. strncpy(str1,str2,n);
原型:char *strncpy(char *dest, const char *src, size_t n)
功能:将str2的前n个字符赋值给str1的前n个字符,str1的剩余部分将用空字节填充
示例:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[125] ;
strncpy(str1,"hello , nice to meet you",5);//将"hello , nice to meet you"前5个字符复制给str1,剩余部分将用空字节填充
puts(str1);
printf("*************************************************\n");
char str2[155] = "this is WangXiaoming , who are you?";
strncpy(str1,str2,6);//将str2前6 个字符复制给str1前6个字符,str1剩余部分将用空字节填充
puts(str1);
return 0;
}
3.strcat VS strncat
#include <stdio.h>
#include <string.h>
int main()
{
char str1[125] = "I'm WangXiaoming .";
char str2[48] = "Hello";
printf("**************this is strcat****************\n");
strcat(str1,str2);
puts(str1);
char str3[125] = "I'm WangXiaoming .";
char str4[48] = "Hello";
printf("**************this is strncat****************\n");
strncat(str3,str4,2);
puts(str3);
return 0;
}
4. sizeof(不在<string.h>中) VS strlen
正如前面所提,一个字符串,如果没有全部赋值,剩下的会自动赋值为’\0’,sizeof通常不会过滤’\0’,而strlen恰恰相反,通常自动过滤了’\0’,即strlen通常得到的是有效字符个数
示例:
#include <stdio.h>
#include <string.h>
int main(){
char str1[25] = "hello";
printf("str1的字符串个数:%d\n",sizeof(str1)/sizeof(str1[0]));
printf("str1的有效字符串个数:%d\n",strlen(str1));
return 0;
}
- strcmp VS strncmp
strcmp:
功能:
比较两个字符串,如果两个字符串相等,则返回0;若str1大于str2,返回一个正数(这个正数不一定是1);若str1小于str2,返回一个负数(不一定是-1);若字符串str1的长度大于str2,且str2的字符与str1前面的字符相同,则也相对于str1大于str2处理
#include <stdio.h>
#include <string.h>
int main(){
char str1[25] = "hello";
char str2[25] = "hello,this is F";
int n ;
n = strcmp(str1,str2);
if(n==0){
printf("n = %d\n",n);
}else if(n>0){
printf("n = %d\n",n);
}else{
printf("n = %d\n",n);
}
return 0;
}
#include <stdio.h>
#include <string.h>
int main(){
char str1[25] = "hello";
char str2[25] = "hello";
int n ;
n = strcmp(str1,str2);
if(n==0){
printf("n = %d\n",n);
}else if(n>0){
printf("n = %d\n",n);
}else{
printf("n = %d\n",n);
}
return 0;
}
#include <stdio.h>
#include <string.h>
int main(){
char str1[25] = "hello,this is F";
char str2[25] = "hello";
int n ;
n = strcmp(str1,str2);
if(n==0){
printf("n = %d\n",n);
}else if(n>0){
printf("n = %d\n",n);
}else{
printf("n = %d\n",n);
}
return 0;
}
strncmp:strncmp(str1,str2,n)
功能:比较两个字符串的前n个字符
strncmp与strcmp返回值类似, 若,str1大于str2则返回一个整数,若等于,则返回一个0,若小于,则返回一个负数
…
…