c语言复制字符串一部分,c语言复制字符串数组
#包含stdio.h
#定义长度128
char* str_copy(char *p,const char *s){
char * t=p;
while (*p=*s ){
}
return t;
}
int main(void){
char str[LENGTH]=“”;
char tmp[LENGTH];
printf(str=%s\n ,str);
Puts(请输入要复制的字符串:);
scanf(%s ,tmp);
str_copy(str,tmp);
Puts(在将tmp复制到str后:);
printf(str=%s\n ,str);
返回0;
}运行结果:
赋值依据*p=*s
第一个是* p=* s的赋值。指针s指向的字符将被赋值给指针d指向的字符。P和s递增。
赋值后,p和s递增。指针P和S分别指向下一个字符。
当函数开始执行时,指针S指向字符串tmp的第一个字符,指针P指向字符串str的第一个字符。只要S指向的字符不为空,就把S指向的字符赋给P指向的字符,然后递增P和S,再处理下一个字符。
当赋给*p的字符为null时,while语句的循环结束。你也可以使用str_copy函数
char* str_copy(char *p,const char *s){
char * t=p;
while (*p=*s ){
}
return t;
}具有以下功能
char* str_copy(char *p,const char *s){
int I=0;
char * t=p;
while (p[i]=s[i]){
我;
}
return t;
}p[i]和s[i]分别是*(p i)和* (s i),它们是访问指针p和s指向的字符之后的第I个字符的表达式,为了访问指针指向的元素之后的第I个字符,分别对指针p和s执行两个操作。
比较两个函数while (*p=*s)不需要变量I做下标,可以节省一点内存。运营效率有望更高。如果
char str[LENGTH]=“”;变成
char * str=“”;会导致程序运行异常。
注意:
不要覆盖字符串的文字量,也不要写入超过字符串文字量的内存空间。
str_copy(str,tmp);
Puts(在将tmp复制到str后:);
printf(str=%s\n ,str);它可以缩写为:
Puts(在将tmp复制到str后:);
printf(str=%s\n ,str_copy(str,tmp));首先,将字符串tmp复制到字符串str,然后显示复制的str。
传递给printf函数的是“指向被复制字符串的第一个字符的指针”。
使用strcpy函数复制字符串头文件。
原型
解释
返回值
#包含字符串. h
char *strcpy(char *s1,const char *s2)
将s2指向的字符串复制到s1指向的数组中。如果s1和s2指向的内存空间重叠,将被视为未定义。
返回s1的值。
#包含stdio.h
#包含字符串. h
int main(void){
char str[]= ;
char * p= vvcat
Printf (str=% s 复制后,strcpy (str,p));
返回0;
}strcpy函数的实现
char *strcpy(char *s1,const char *s2){
char * tmp=s1
while (*s1=*s2 ){
}
返回tmp
}strncpy函数控制字符串复制的头文件数量。
原型
解释
返回值
#包含字符串. h
char *strncpy(char *s1,const char *s2,size_t n)
将s2指向的字符串复制到s1指向的数组中。如果s2的长度大于或等于n,它将被复制到第n个字符。否则,其余部分用空字符填充。如果s1和s2指向的内存空间重叠,将被视为未定义。
返回s1的值。
#包含stdio.h
#包含字符串. h
int main(void){
char str[]= ;
char * p= vvcat
Printf (str=% s 复制后,strncpy (str,p,4));
返回0;
}运行结果:
strncpy函数的实现
char *strncpy(char *s1,const char *s2,size_t n){
char * tmp=s1
while (n){
如果(!(*s1=*s2 )){
打破;
}
n-;
}
while (n - ){
* s1= \ 0
}
返回tmp
}
转载请联系作者授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。