c语言之利用指针复制字符串的几种形式
第一种:
#include<stdio.h> #include<iostream> void copy_string(char* p1, char* p2) { for (; *p1 != '\0'; *p1++,*p2++) { *p2 = *p1; } *p2 = '\0'; } int main() { char* str1 = (char*) "hello world"; char str2[] = "i am a student"; copy_string(str1, str2); printf("%s\n",str2); system("pause"); return 0; }
第二种:
#include<stdio.h> #include<iostream> void copy_string(char* p1, char* p2) { while ((*p2 = *p1) != '\0') { *p2++; *p1++; } } int main() { char* str1 = (char*)"hello world"; char str2[] = "i am a student"; copy_string(str1, str2); printf("%s\n", str2); system("pause"); return 0; }
第三种:
#include<stdio.h> #include<iostream> void copy_string(char* p1, char* p2) { //指针运算符比++优先级高 //也就是先将*p1的值给*p2,再进行++操作,i++是先赋值,后自增 while ((*p2++ = *p1++) != '\0') } int main() { char* str1 = (char*)"hello world"; char str2[] = "i am a student"; copy_string(str1, str2); printf("%s\n", str2); system("pause"); return 0; }
第四种:
#include<stdio.h> #include<iostream> void copy_string(char* p1, char* p2) { while (*p1 != '\0') { *p2++ = *p1++; } *p2 = '\0'; } int main() { char* str1 = (char*)"hello world"; char str2[] = "i am a student"; copy_string(str1, str2); printf("%s\n", str2); system("pause"); return 0; }
第五种:
#include<stdio.h> #include<iostream> void copy_string(char* p1, char* p2) { //当*p2++ = *p1++变为0时,就会结束循环 while (*p2++ = *p1++) { ; //'\0' == 0;结束标志 } } int main() { char* str1 = (char*)"hello world"; char str2[] = "i am a student"; copy_string(str1, str2); printf("%s\n", str2); system("pause"); return 0; }
第六种:
#include<stdio.h> #include<iostream> void copy_string(char* p1, char* p2) { for (; *p2++ = *p1++;) { ; //'\0' == 0;结束标志 } } int main() { char* str1 = (char*)"hello world"; char str2[] = "i am a student"; copy_string(str1, str2); printf("%s\n", str2); system("pause"); return 0; }
第七种:
#include<stdio.h> #include<iostream> void copy_string(char str1[], char str2[]) { char* p1, * p2; p1 = str1; p2 = str2; while((*p2++ = *p1++)!='\0') { ; //'\0' == 0;结束标志 } } int main() { char* str1 = (char*)"hello world"; char str2[] = "i am a student"; copy_string(str1, str2); printf("%s\n", str2); system("pause"); return 0; }