这部分代码似乎有什么问题:
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);
}
p
是char*
,i
最初是0
。
在问题Not getting all characters after reading from file
这里有什么问题?
答案 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++]);