指针

linux1304 2007-04-22 07:43:04
#include "stdio.h"
main()
{char a[80],b[80];
char *ap,*bp;
ap=a;
bp=b;
scanf("%s",ap);
ap=a;
while(*ap!='\0')
{*bp=*ap;
bp++;
ap++;
}
printf("%s\n,%s\n",ap,bp);
}
程序倒是没什么问题.
但是没有得到我要的结果.
要求将字符串A复制到字符串B中.
...全文
228 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
phnessu4 2007-04-22
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

#define n 80 //宏

int main (void)
{
char a[n],b[n];
char *ap,*bp;

ap=a;
bp=b;

printf ("Please enter your string:\n");
scanf("%s",ap); //删掉ap = a;

while( *ap != '\0' )
{
*bp=*ap;
bp++;
ap++;
}

printf("string1:%s\nstring2:%s\n",a ,b); //换成数组

system ("pause");
return 0;
}
改过后程序美观了不少
: )
justshe 2007-04-22
  • 打赏
  • 举报
回复
gets(ap); ////用这个好一点,如果lz想输入空格的话
----------------------------------------------------
我认为gets()应该少用点,你就不担心缓冲溢出问题吗?
真的要用的话,用fgets();
shunzi1987 2007-04-22
  • 打赏
  • 举报
回复
不能删,这时指针指向最后一个元素
ap=a;
让指针指向首地址
wmy0011 2007-04-22
  • 打赏
  • 举报
回复
ap=a;
这一句多余
删了就差不多了!
small_sentinel 2007-04-22
  • 打赏
  • 举报
回复
#include <stdio.h>
int main()
{
char a[80],b[80];
char *ap,*bp;
ap=a;
bp=b;
gets(ap); ////用这个好一点,如果lz想输入空格的话
//ap=a; 这句多了吧
while(*bp++ = *ap++)
;
printf("%s\n%s\n",a, b);
return 0;
}
expter 2007-04-22
  • 打赏
  • 举报
回复
*bp='\0';
printf("%s\n,%s\n",a,b);

chenzhiyubuaa 2007-04-22
  • 打赏
  • 举报
回复
#include "stdio.h"
int main()
{
char a[80],b[80];
char *ap,*bp;
ap=a;
bp=b;
scanf("%s",ap);
ap=a;
while(*bp++ = *ap++)
;
printf("%s\n%s\n",a, b);
return 0;
}

除了楼上说的,还要将b的最后一个设为0
venuschenxi 2007-04-22
  • 打赏
  • 举报
回复
while(*ap!='\0')
{*bp=*ap;
bp++;
ap++;
}
循环结束后ap和bp分别指象的是数组a和b所存储的字符串的后一个位置.
接着输出的也就是字符串后的内存空间里的东西.

69,371

社区成员

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

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