不能实现运行结果那样能把字符数组src中所有的字符都转换到字符数组dest中,我的运行结果只能取到src中的一部分,请问这是为什么?
运行结果如图:
要求如下:
这个现象是因为使用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遇到空格会结束