本来是想找puts函数的和scanf函数的优缺点的,结果在网上看到一个人提了一个c的最基本的scanf的问题,我就当检错题看了一下,发现程序应该没有问题,就把程序复制到vc6.0中运行了一下,发现居然报错了,源程序如下。
#include<stdio.h>
#include<string.h>
int main(void){
char sza[1024];
char szb[512];
scanf("%s",sza);
scanf("%s",szb);
char *p=sza;
char *pb = szb;
while (*p++);
while (*p++ = *pb++);
puts(sza);
printf("%s", sza);
一直报错说char *p那一行的type前面缺少“;”,我一开始以为复制的问题,符号错误,手动改了一下,发现还是错误,然后我在想难道是初始化的错误?就把char *p改成了
char *p;p=sza;还是一样的错误。然后我网上找scanf的执行细节,找到了一大堆scanf和puts函数的用法和区别对问题解决没有什么大的帮助。然后尝试这自己改了一下程序,最后终于能够运行,修改后程序如下:
#include<stdio.h>
#include<string.h>
int main(void){
char sza[1024];
char szb[512];
char *p;//char*p=sza;也是不报错的
char *pb;
scanf("%s",sza);
scanf("%s",szb);
p=sza;
pb = szb;
while (*p++);
while (*p++ = *pb++);
puts(sza);
printf("%s", sza);
}
到这我已经非常非常奇怪了,为什么声明放在前面就可以赋值,而执行输入语句之后就不能初始化赋值?先记录一下这个问题,如果高手看到还希望不吝赐教~~随着学习的深入我找到答案后会再回来解决的。