编写一个C程序,定义两个字符数组,并初始化数组的值,然后组合这个两个数组的值并存储在第三个数组中,要求用指向数组的指针实现。例如:
》字符数组arr1
H e l l o
》字符数组arr2
W o r l d
将两个数组合并后存储在数组arr3中,arr3 中元素的值应该为:
H e l l o w o r l d
#include<stdio.h>
#define N 5
void main()
{
char a[]={'H','e','l','l','o'},b[]={'W','o','r','l','d'};
char c[N+5];
char i,k,*o,*p,*q;
o=a;p=b;q=c;
for(i=0;i<N;i++,*o++)
{
*q=*o;
}
c[N+5]=*q;
for(i=0;i<N+5;i++,*p++,*q++)
{
if(i>5)
{
这不知道咋写了
printf("%c",*q);
}
}
printf("\n");
}
----------------解决方案--------------------------------------------------------
您对字符串的理解有所偏差.
char a[]={'H','e','l','l','o'};
这是不标准的字符串.C语言中字符串都以'\0'结尾。您可以直接这样定义:char a[]="Hello";
所以您那个char c[N+5]长度也是不对的,因为至少还要保存一个'\0'结束符.
指针p递增的是地址,p++才是有意义的.
----------------解决方案--------------------------------------------------------
我还是想不出来啊,麻烦帮我改一下,可以吗,谢谢啊
----------------解决方案--------------------------------------------------------
win-tc 环境运行成功,红色部分改为 *q会出现错误,谁知道为什么
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
main()
{
char a[]={'H','e','l','l','o'},b[]={'W','o','r','l','d'};
char c[11];
char i,k,*o,*p,*q;
o=a;p=b;q=c;
for(i=0;i<5;i++)
{ *q=*o;
q++;
o++;
printf("%c",c[i]);
}
for(i=5;i<10;i++){
*q=*p;
p++;
q++;
printf("%c",c[i]);
}
printf("\n");
getch();
return(0);
}
----------------解决方案--------------------------------------------------------
编写一个C程序,定义两个字符数组,并初始化数组的值,然后组合这个两个数组的值并存储在第三个数组中,要求用指向数组的指针实现。例如:
》字符数组arr1
H e l l o
》字符数组arr2
W o r l d
将两个数组合并后存储在数组arr3中,arr3 中元素的值应该为:
H e l l o w o r l d
#include<stdio.h>
#define N 5
void main()
{
char a[N]={'H','e','l','l','o'},b[]={'W','o','r','l','d'};
char c[N+5];
char i,k,*o,*p,*q;
o=a;p=b;q=c;
for(i=0;i<N;i++,o++)
{
*q=*o;
q++;
}
for(i=0;i<5;i++,p++)
{
*q=*p;
q++;
}
q=c;
for(i=0;i<N+5;i++,q++)
{
printf("%c",*q);
}
printf("\n");
getch();
}
1.字符数组!=字符串
2.用指针进行对数组的操作,针对地址改变(自增处理下一个元素),而不是指针指向的内容.
3.要记住指针所指向在数组中的位置.
4.按理说,这里还不是真正的指针处理,我觉得用字符串+指针会更好做一些.
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#define N 10
void main()
{
char a[5]={'H','e','l','l','o'},b[5]={'W','o','r','l','d'};
char c[N],*p1,*p2,*p3;
int i,j;
p1=a;p2=b;p3=c;
for(i=0;i<5;i++)
{
*p3=*(p1+i);
p3++;
}
for(j=0;j<N;j++)
{
*p3=*(p2+j);
p3++;
printf("%c",c[j]);
}
printf("\n");
}
谢谢你们,老师讲了个简单点的
----------------解决方案--------------------------------------------------------