一个 for 语句给出的结果????

L_lin 2002-01-16 12:14:32
我用的是VC++6.0
Windows 2000 Professional

这个程序和功能是读取和打印一个 byte<1000 的a.txt文本文件。
可是为什么这样使用 for 语句会出现打印出来的不是a.txt,而是
打印的都是字符 buffer[1] 里的字符。
等来请教各位高手 :)

以下是有错误的原码:

#include <stdio.h>
#include <string.h>

const int buffer_size =1000;

void main()
{
FILE * fp;
int count=0;
char *buffer=new char[buffer_size];
int size;
if((fp=fopen("a.txt","r"))==0)
{
printf("\n The file is not find.");
return ;
}
size=fread(buffer,1,buffer_size,fp);
printf("\n this a.txt is %d bytes.\n",size);
printf("\n");
buffer[size]='\0';
for(count++;size!=-1;size--) //问题出现
if(buffer[count]!='\0')
putchar(buffer[count]); //打印有错误

printf("\n");
delete[] buffer;

}


1.这个错误为什么会发生,发生的原因是什么。(当然我会改这个错误)
2.为什么改写成下面的形式就可以?
for(;size!=-1;size--)
{
count++;
if(buffer[count]!='\0')
putchar(buffer[count]);
}
3.希望来了的朋友都能说说你们的看法。
4.谢谢大家,祝大家新年快乐,心想事成。:)
...全文
63 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovelybajie 2002-01-17
  • 打赏
  • 举报
回复
关注!
ljbjj 2002-01-17
  • 打赏
  • 举报
回复
:)说的对,想想以前好像没有注意到这个问题。
其实
for(;size!=-1;size--,count++) //问题出现
if(buffer[count]!='\0')
putchar(buffer[count]);
应该也就可以了,条件的变化都放到最后一个地方应该就OK了。
L_lin 2002-01-17
  • 打赏
  • 举报
回复
:)
panjet 2002-01-16
  • 打赏
  • 举报
回复
count的初始值应该设为-1,这样打印出的文本才会完整。
panjet 2002-01-16
  • 打赏
  • 举报
回复
for(count++;size!=-1;size--)这里面的count实际上只加了一次,在for循环开始的时候。
这样改就行了
for(;count++,size!=-1;size--)
unicode 2002-01-16
  • 打赏
  • 举报
回复
for(count++;size!=-1;size--)这里面的count又不会增加当然不行了
L_lin 2002-01-16
  • 打赏
  • 举报
回复
:)
nana11 2002-01-16
  • 打赏
  • 举报
回复
count只加了一次,coutn=1.所以你显示的总是第一个字符。

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧