这段代码在cb下会报错?

laowang2 2009-08-20 09:33:20
#pragma hdrstop
#include <stdio.h>
//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{

getchar();

char * filename = "E:\\d.txt";
FILE *fp = fopen(filename, "rw");

char buf[100]={0};

fgets(buf, 100, fp);
int i = 1;
while (fgets(buf, 100, fp) != NULL ) {
printf("%d %s", i++, buf);
}
getchar();
return 0;
}
...全文
193 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
laowang2 2009-08-20
  • 打赏
  • 举报
回复
在vc7下面是正常的,cb下rw改为rb也是可以的,可能是编译器的原因?
lihuimin622 2009-08-20
  • 打赏
  • 举报
回复
文件打开失败(fp==NULL)就会出错
这里读文件,应该用r的方式 打开(如果文件存在的话)

getchar();

char * filename = "E:\\d.txt";
FILE *fp = fopen(filename, "r");

char buf[100]={0};

//fgets(buf, 100, fp);
int i = 1;
while (fgets(buf, 100, fp) != NULL ) {
printf("%d %s", i++, buf);
}
getchar();
return 0;
datacodebugs 2009-08-20
  • 打赏
  • 举报
回复
int main(int argc, char* argv[])
{

getchar();

char * filename = "E:\\d.txt";
FILE *fp = fopen(filename, "rw");
if (!fp)
return -1;

char buf[100]={0};
int i = 1;

while (fgets(buf, 100, fp) != NULL ) {
printf("%d %s", i++, buf);
}
getchar();

return 0;
}
laowang2 2009-08-20
  • 打赏
  • 举报
回复
呵呵,分给你了。
bob_zsj 2009-08-20
  • 打赏
  • 举报
回复
给分
bob_zsj 2009-08-20
  • 打赏
  • 举报
回复

#include <stdio.h>

int main(int argc, char* argv[])
{
//声明语句
char * filename = "G:\\Projects\\GCCProjects\\d.txt";
FILE *fp = fopen(filename, "r+"); //no "rw" type
char buf[100]={0};
int i = 1;

//执行语句
getchar();

if (!fp){
printf("open file error!\n");
return -1;
}

while (fgets(buf, 100, fp) != NULL ) {
printf("%d %s", i++, buf);
}
getchar();
return 0;
}

/*
如果你创建的是C工程的话,声明语句要写在执行语句之前;
另外C语言标准中没有"rw"方式,不过是某些编译器扩展出了"rw",而C++Builder没有扩展:
fopen
语法:
#include <stdio.h>
FILE *fopen( const char *fname, const char *mode );



fopen()函数打开由fname(文件名)指定的文件, 并返回一个关联该文件的流.如果发生错误, fopen()返回NULL. mode(方式)是用于决定文件的用途(例如 用于输入,输出,等等)

Mode(方式) 意义
"r" 打开一个用于读取的文本文件
"w" 创建一个用于写入的文本文件
"a" 附加到一个文本文件
"rb" 打开一个用于读取的二进制文件
"wb" 创建一个用于写入的二进制文件
"ab" 附加到一个二进制文件
"r+" 打开一个用于读/写的文本文件
"w+" 创建一个用于读/写的文本文件
"a+" 打开一个用于读/写的文本文件
"rb+" 打开一个用于读/写的二进制文件
"wb+" 创建一个用于读/写的二进制文件
"ab+" 打开一个用于读/写的二进制文件

示例:

char ch;
FILE *input = fopen( "stuff", "r" );
ch = getc( input );
*/
laowang2 2009-08-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ppower 的回复:]
問題沒描述清楚,不明不白。

樓主是不是想說:
FILE *fp = fopen(filename, "rw");
//在vc7下打開文件成功,而在BCB中用rw方式打開文件失敗,非要用rb方式打開才可?

把問題歸納一下,就可以省去大家看那些垃圾代碼的時間。
[/Quote]
不好意地,请解释一下。
勉励前行 2009-08-20
  • 打赏
  • 举报
回复
問題沒描述清楚,不明不白。

樓主是不是想說:
FILE *fp = fopen(filename, "rw");
//在vc7下打開文件成功,而在BCB中用rw方式打開文件失敗,非要用rb方式打開才可?

把問題歸納一下,就可以省去大家看那些垃圾代碼的時間。

13,825

社区成员

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

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