#include"stdio.h"
#include"string.h"
void main()
{
char a[5],b[5];
void insert(char s1[5],char s2[5],int f);
// 函数声明尽量写到 函数体外,, 头文件包含的后面。。
printf("Input s1:");
gets(a);
printf("Input s2:");
gets(b);
insert(a,b,2);
}
注意 代码风格啊!!!!!!!
推荐 看一下
一个好像叫做
刘锐 的人 写的 《高质量C/C++编程》 里面的 代码编写风格那一些章节!!!!!!!
很重要的!!
void insert(char s1[5],char s2[5],int f)
{
char c[10];
int i,j,k;
//传过来的f值是2, 那么插入的位置应该是c[0]的后面, c[1]才是第2个位置,那么最开始赋值的话只能 把 第一个数组的s1[0]这1个元素赋值给c数组
// 推导得知, 最开始停止 赋值的条件应该是 k < f-1; 而不是 k < f, 不然就是插入到 第3个位置了,所以下面要改
/* for(i=0,k=0;k<f;k++)
{
c[k]=s1[i];
i++;
}
*/
for (i = 0, k = 0; k < f -1; k++)
{
c[k] = s1[i];
i++;
}
//在第2位置把第2字符数组 接在刚才位置的后面, 但是 我们一般判断字符数组终止的条件不用 长度来判断, 应为 字符数组的最后 其实系统默认
//加了一个'\0'; 所以我们应该这样处理
/*
for(j=0,k=f;k<7;k++)
{
c[k]=s2[j];j++;
}
*/
for (j = 0; s2[j] != '\0'; k++)
{
c[k] = s2[j];
j++;
}
// 同理,我们在接下来也用 '\0'来判断字符数组有没有结束
/*
for(i=f,k=7;k<10;k++)
{
c[k]=s1[i];i++;
}
*/
for (i = f -1; s1[i] != '\0'; k++)
{
c[k] = s1[i];
i++;
}
//最后,需要在字符数组后面加上结束标志: '\0'
c[k] = '\0';
puts(c);
}
[
本帖最后由 missu_1314 于 2012-5-22 17:59 编辑 ]