指针应用

daolaAmeng 2008-05-04 09:40:39
如何用指针实现如下:
1.用户选择所要输入的两个字符串字符的个数。
2.输入两个字符串。
3.将两个字符串连在一起输出。
下面是我变得代码,不能正常运行。


#include <stdio.h>
#include <stdlib.h>
void main()
{
int n1,n2,i;
char *k1,*k2,*j1,*j2,*p1,*p2;
printf("请输入所申请的两个空间的大小(用空格隔开):");
scanf("%d%d",&n1,&n2);

k1=(char *)malloc(n1*sizeof(char));
j1=(char *)malloc(n2*sizeof(char));
printf("qing shu ru na liang\n");
for(k2=k1,i=1;i<=n1;i++)
scanf("%c",k2++);
i=1;
for(j2=j1;i<=n2;i++)
scanf("%c",j2++);
for(p1=*k2; p1!='\0';k2++)
;
for(p2=*j2;p2!='\0';p1++,p2++)
*p1=*p2;
*p1='\0';
for(i=1;i<=n1+n2;i++,p1++)
printf("%s",*p1);
}
...全文
112 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
为了理想的奋 2008-05-10
  • 打赏
  • 举报
回复
不说逻辑问题了~说两个我的想法
1> 为什么要 malloc两次呢?malloc一次,然后分段不就好~
2> 如果使用的是VC6.0,建议用new,而不要随便malloc,原因是更好的防止内存泄露,malloc的泄露Debug检测不到的~
3> 虽然是练习或说试验,但还是优化一下你的变量命名吧^@^
我个人比较喜欢,无论是不是一条语句都会在 for之类的执行体上加上{} ,这样可以更好的突出程序块~
kaz33 2008-05-10
  • 打赏
  • 举报
回复


for(k2=k1,i=1;i <=n1;i++)
scanf("%c",k2++);
i=1;
for(j2=j1;i <=n2;i++)
scanf("%c",j2++);


为什么不这样些呢?

char* k1=(char *)malloc(5*sizeof(char));
char* j1=(char *)malloc(n2*sizeof(char));
scanf("%s",k1);
scanf("%s",j1);
ouyh12345 2008-05-04
  • 打赏
  • 举报
回复
k1=(char *)malloc(n1*sizeof(char));
j1=(char *)malloc(n2*sizeof(char));

得多分配一个字节,用来存放'\0'

for(i=1;i <=n1+n2;i++,p1++)
printf("%s",*p1);

*p1='\0';结果是输出字符串p1后面的字符
WingForce 2008-05-04
  • 打赏
  • 举报
回复



for(p1=*k2; p1!='\0';k2++);
for(p2=*j2;p2!='\0';p1++,p2++)
*p1=*p2;
*p1='\0';
for(i=1;i <=n1+n2;i++,p1++)
printf("%s",*p1);


这段修改为:

for (i = 0; i < n1; ++i) putchar(k1[i]);
for (i = 0; i < n2; ++i) putchar(j1[i]);

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧