问题在change里:
void change(long int n,char a[]) //将十进制转换成二进制给数组a
{
long int i=0;
while(n!=0)
{
a[i]=n%2+'0';
n=n/2;
i++;
}
a[i]='\0';
}
改成这样。
因为你a是char数组,所以一定要在0和1后面加上‘0’,这样才是0和1的ASCII码,才能作为char或者字符串打印出来。
然后a[i]的最后一步应该是'\0',这个应该是你疏忽了。
#include
#include
void
fun(char
str1[],char
str2[])
{
char
*p
=
str1;
while(*p++
!=
'\0');
p--;
while(*p++
=
*str2++);
*str2
=
'\0';
}
int
main()
{
char
str1[80]="This
Is
a
",str2[80]="c
Program";
printf("String1
is:
%s\n",str1);
printf("String2
is:
%s\n",str2);
fun(str1,str2);
printf("Result
is:
%s\n",str1);
return
0;
}
这是根据一楼改的结果
函数传递有点忘了~经过强力鉴定,123楼均为正解。指针理解不深的话推荐一楼,吼吼~~
void fun(char str1[],char str2[])
{
int
i,
pos=0,
len
=
strlen(str1);
for
(i=1; i
{
str2[pos]
=
str1[i];
pos
++;
}
str2[pos]
=
0;
}