C语言中strcpy函数的使用的问题

1.问题:我按老师给的步骤把代码敲好后,发现并不能像老师的运行结果那样能把字符数组src中所有的字符都转换到字符数组dest中,我的运行结果只能取到src中的一部分,请问这是为什么?

2.相关代码截图
![图片上传中...]

3.运行结果截图图片描述

3.任务要求及老师运行出来的结果
图片描述

2.尝试过很多方法/搜索过百度必应/问过群里一些朋友,但我仍不能解决这个问题,求助,万分感谢您的回答!

阅读 3.8k
2 个回答

你好,这个现象是因为使用scanf输入的时候输入空格后,自动认为输入结束,下面在你的原代码上做了注释分析:

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
char src[80]={'\0'};
char dest[80]={'\0'};
char *p=src;
printf("请输入一串字符:");
scanf("%s",p);
/*当输入hello,nice to meet you!时,遇到“nice”后的空格认为输入结束,
所以只保存了前一部分内容“hello,nice”*/
strcpy(dest,src);
printf("执行strcpy前dest的内容:\n");
printf("执行strcpy前dest的内容:%s",dest);
return 0;
}

建议使用gets函数输入字符可以避免上述情况,代码如下,只做小小修改就好啦~

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
char src[80]={'\0'};
char dest[80]={'\0'};
char *p=src;
printf("请输入一串字符:");
gets(p);
strcpy(dest,src);
printf("执行strcpy前dest的内容:\n");
printf("执行strcpy前dest的内容:%s",dest);
return 0;
}

执行结果如下
图片描述

望采纳哦!

你在scanf..语句后面输出printf("%s\n", &p);看看输出是否和输入一致。
如果是空格后面的数据被截掉了,可以使用scanf("%[^\n]", &p);

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进