一个程序,,VC++编译无错,运行有错

来源:百度知道 编辑:UC知道 时间:2024/04/27 23:15:30
#include <stdio.h>
void main()
{char str1[]="people and computer",str2[10];
char *p1=str1,*p2=str2;
scanf("%s",&p2);
printf("%s",p2);
printf("%s\n",p1);
}
这个简单的程序.....我怎么用VC++弄成EXE文件以后..为什么执行时,提示我程序出错啊..编译时是没有错的啊....本人QQ542890167

scanf("%s",&p2);
这句是错的,去掉这个&.

应该是软件安装时候有错误吧,我曾经安装win-tc时候也出现过这种情况。

确实是scanf("%s",&p2); 这句有问题。你的意思是把%s输到p2所指向的数组里面。这里面p2已经是一个指针了,也就是str2[10]这个字符数组的首地址。scanf函数就是把数据输入到一个地址指向的空间里面。你再用取地址函数取首地址的地址,还不出错嘛?

void main()
{
char str1[]="people and computer";
char str2[10]={0};
scanf("%s", str2);
printf("%s%s\n", str2, str1);
}
这样就可以了,不过不建议这么用scanf,很容易溢出