2)关于处理字符数组函数的参数书写问题
首先我先展示一个截图,表示两个代码的传值问题“
然后代码展示
1 #include <stdio.h> 2 #define N 100 3 4 /*字符串长度计算函数*/ 5 6 int len(char ch[]){ 7 int i=0; 8 while (ch[i]!='\0'){ 9 i++; 10 } 11 return i; 12 } 13 14 /*字符串打印函数*/ 15 16 void chPrint(char ch[]){ 17 printf("%s",ch); 18 } 19 20 /*字符串插入字符串函数*/ 21 22 int chIns(char ch[],char ch1[],int k){ 23 int i; 24 int len_ch=len(ch); 25 int len_ch1=len(ch1); 26 if (k>len_ch) { 27 printf("插入的位置大于第一个字符串的长度,程序退出!"); 28 return -1; 29 } 30 else { 31 for (i=len_ch+len_ch1-1;i>=k+len_ch1;i--){ 32 33 ch[i]=ch[i-len_ch1]; /*移动字符将要插入的位置空出来*/ 34 35 } 36 for (i=0;i<len_ch1;i++){ 37 ch[k+i]=ch1[i]; /*插入字符串*/ 38 } 39 ch[len_ch+len_ch1]='\0'; /*设置字符结束符*/ 40 return 1; 41 } 42 } 43 int main(){ 44 char a[N],b[N]; 45 int k,ins; 46 printf("请输入第一个字符串"); 47 scanf("%s",a); 48 printf("请输入第二个字符串"); 49 scanf(" %s",b); 50 printf("请输入想在第一个字符串的第几个字符后面插入第二个字符串"); 51 scanf("%d",&k); 52 ins=chIns(a,b,k); /*ins用来接收插入函数的返回值,判断是否执行了插入操作*/ 53 if (ins==1) { 54 chPrint(a); 55 } 56 getch(); 57 return 0; 58 }
第二个代码展示:
1 // 2 // Created by Interact on 2017/9/6. 3 // 4 5 #include <stdio.h> 6 #define N 100 7 8 /*字符串长度计算函数*/ 9 10 int len(char *ch){ 11 int i=0; 12 while (ch[i]!='\0'){ 13 i++; 14 } 15 return i; 16 } 17 18 /*字符串打印函数*/ 19 20 void chPrint(char *ch){ 21 printf("%s",ch); 22 } 23 24 /*字符串插入字符串函数*/ 25 26 int chIns(char *ch,char *ch1,int k){ 27 int i; 28 int len_ch=len(ch); 29 int len_ch1=len(ch1); 30 if (k>len_ch) { 31 printf("插入的位置大于第一个字符串的长度,程序退出!"); 32 return -1; 33 } 34 else { 35 for (i=len_ch+len_ch1-1;i>=k+len_ch1;i--){ 36 37 ch[i]=ch[i-len_ch1]; /*移动字符将要插入的位置空出来*/ 38 39 } 40 for (i=0;i<len_ch1;i++){ 41 ch[k+i]=ch1[i]; /*插入字符串*/ 42 } 43 ch[len_ch+len_ch1]='\0'; /*设置字符结束符*/ 44 return 1; 45 } 46 } 47 int main(){ 48 char a[N],b[N]; 49 int k,ins; 50 printf("请输入第一个字符串"); 51 scanf("%s",a); 52 printf("请输入第二个字符串"); 53 scanf(" %s",b); 54 printf("请输入想在第一个字符串的第几个字符后面插入第二个字符串"); 55 scanf("%d",&k); 56 ins=chIns(a,b,k); /*ins用来接收插入函数的返回值,判断是否执行了插入操作*/ 57 if (ins==1) { 58 chPrint(a); 59 } 60 getch(); 61 return 0; 62 }
”