scanf和数组复制的一个问题

本来是想找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);

到这我已经非常非常奇怪了,为什么声明放在前面就可以赋值,而执行输入语句之后就不能初始化赋值?先记录一下这个问题,如果高手看到还希望不吝赐教~~随着学习的深入我找到答案后会再回来解决的。









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值