指向char的问题

时间:2011-10-14 05:24:54

标签: c

这部分代码似乎有什么问题:

while(c != EOF){    
    c = fgetc(myFile);
    p[i++]=c;
    printf("%c", p[i]);
}

即使malloc成功,它似乎也不会将值存储在p[i]中,并打印垃圾。但是,此代码打印字符很好:

while(c != EOF){    
    c = fgetc(myFile);
    //p[i++]=c;
    printf("%c", c);
}

pchar*i最初是0。 在问题Not getting all characters after reading from file

中提问

这里有什么问题?

3 个答案:

答案 0 :(得分:3)

p[i++] = c行存储字符并增加i。下一行打印p[i],但我已经增加。试试这个:

while(c!=EOF){    
    c=fgetc(myFile);
    p[i]=c;
    printf("%c",p[i]);

    i++;
}

作为旁注,你可能会重写它

while((c = fgetc(stdin)) != EOF)
    *p++ = c;

答案 1 :(得分:0)

问题是,

while(c!=EOF){    
              c=fgetc(myFile);
              p[i++]=c;
              printf("%c",p[i]);
             }

查看p [i ++] = c,它将c的值存储在p [i]中,而不是将i递增1, 因此,当您使用p [i]打印字符时,您指的是另一个可能存有垃圾的内存位置。

答案 2 :(得分:0)

存储字符后,您正在递增i,因此您正在打印下一个尚未存储任何内容的位置。

将行更改为:

p[i]=c;
printf("%c",p[i++]);