小小的警告???

番茄家 2001-07-21 09:34:56
小弟有一个小问题,还请各位高手指点!
在BCB中读取文件时,使用ch=fgetc(fp);这样一个语句为什么会出现警告?
...全文
137 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaolun 2001-07-24
  • 打赏
  • 举报
回复
Change the Code To:

main()
{
FILE *fp;
char ch;
fp=fopen("file.txt","r");
while(!feof(fp))
{
ch=(char)(fgetc(fp));//此句出现警告
……
}
}
dycdyc123 2001-07-24
  • 打赏
  • 举报
回复
gz
Wingsun 2001-07-24
  • 打赏
  • 举报
回复
是啊,你从有符号类型转换成为无符号类当然有警告啦!
半百男人 2001-07-24
  • 打赏
  • 举报
回复
fgetc()返回的是int类型,你定义的是char 所以有警告。
番茄家 2001-07-24
  • 打赏
  • 举报
回复
警告内容为:
[C++ Warning]TestUnit.cpp(31):W8071 Conversion may lose significant digits.
XioGua 2001-07-23
  • 打赏
  • 举报
回复
I also 倒 ...

&_#
jixian 2001-07-23
  • 打赏
  • 举报
回复
hihi
「已注销」 2001-07-23
  • 打赏
  • 举报
回复
没下文了…………

我倒…………

@_@
whitelion 2001-07-22
  • 打赏
  • 举报
回复
cc
猛禽 2001-07-22
  • 打赏
  • 举报
回复
对啊,警告什么?
aningstar 2001-07-22
  • 打赏
  • 举报
回复
同意项羽兄
Wingsun 2001-07-22
  • 打赏
  • 举报
回复
警告信息是什么?
番茄家 2001-07-22
  • 打赏
  • 举报
回复
我的程序很简单:
main()
{
FILE *fp;
char ch;
fp=fopen("file.txt","r");
while(!feof(fp))
{
ch=fgetc(fp);//此句出现警告
……
}
}
程序编译执行没有问题,只是有此一警告!
marcal 2001-07-21
  • 打赏
  • 举报
回复
我看着要具体情况具体分析,
我上次也遇到这样的问题,
以下是我上次的问题:
第一段

long fh,l;
AnsiString *er;
char *pszBuffer; //定义内存缓存区
pszBuffer = new char[1000]; //建立内存缓存区
fh=_lopen("c:\autoexec.bat",OF_READWRITE);
l=_lread(fh,pszBuffer,20);
Label1->Caption=l;
Label2->Caption=*er;
_lclose(fh);

第二段
FILE *fh;
char a;
fh=fopen("c:\autoexec.bat","wb+");
a=fgetc(fh);
fclose(fh);

但是这些操作都有问题,出现窗体上面写:
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 004018c2 in module 'PROJECT.EXE'.Read of address FFFFFFFF'.Process stoped.Use Step or Run to continue.
第二种方法弹出窗口就是两个数字不同罢了

004018c2-----32566694
FFFFFFFF-----F8B50644

但是第三种方法用FileOpen、FileSeek的却行。


结果两位大虾帮我解决了这个问题:
回复人:luhongjun(过江项羽) (2001-7-2 17:38:35) 得17分
fh=fopen("c:\\autoexec.bat","wb+");
fh=_lopen("c:\\autoexec.bat",OF_READWRITE);

 回复人:Wingsun(孙春阳) (2001-7-2 17:51:50) 得10分
第一个方法改为:去掉AnsiString的指针,没有用。
long fh,l;
char *pszBuffer; //定义内存缓存区
pszBuffer = new char[1000]; //建立内存缓存区
fh=_lopen("c:\\autoexec.bat",OF_READWRITE);
l=_lread(fh,pszBuffer,20);
Label1->Caption=l;
Label2->Caption=pszBuffer;
_lclose(fh);
第二段改为://你的问题是fopen打开方式错误。
FILE *fh;
char a;
fh=fopen("c:\\autoexec.bat","w+");
if(fh!=NULL)
{
fseek(fh,0, SEEK_SET);
a=fgetc(fh);
fclose(fh);
}

所以我觉得你要告诉我你的使用情况呀!!!
luhongjun 2001-07-21
  • 打赏
  • 举报
回复
你的ch以后再也没有使用,就出现警告。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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