大家帮我看看下面这个读取文件的小程序有什么问题,谢了哈

aa1298 2011-03-18 09:06:12
/* HELLO.C -- Hello, world */

#include "stdio.h"
#include "conio.h"

main()
{
float k;
float *p1=&k;
FILE *fp;
fp=fopen("file bcf","r");
fread(p1,8,1,fp);
printf("k is %f\n",k);
getch();

}



下面这个是文件名为 bcf.dat 的文件
1.0000000e+000 2.0000000e+000 3.0000000e+000 4.0000000e+000 5.0000000e+000 6.0000000e+000 7.0000000e+000 8.0000000e+000 9.0000000e+000 0.0000000e+000
...全文
139 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-03-18
  • 打赏
  • 举报
回复
不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
jialejiahi 2011-03-18
  • 打赏
  • 举报
回复
你就读一个数,干脆fscanf吧。

/* HELLO.C -- Hello, world */

#include "stdio.h"

int main()
{
float k;
float *p1=&k;
FILE *fp;

fp=fopen ("bcf.dat","r");
fscanf (fp, "%e", p1);
printf ("k is %e\n",k);

getchar();
fclose (fp);
return 0;
}
/* *
* 运行效果:
* k is 1.000000e+00
*
* */

yiyefangzhou24 2011-03-18
  • 打赏
  • 举报
回复
貌似问题很多[Quote=引用 6 楼 linuxbirdman 的回复:]
C/C++ code
#include "stdio.h"
#include "conio.h"

main()
{
char data[15];
memset(data, 0, 15);
FILE *fp;
fp=fopen("bcf.bat","r");
fread(data,15,1,fp);
//printf("k is %s\n",data)……
[/Quote]
AnYidan 2011-03-18
  • 打赏
  • 举报
回复
FILE *fopen(char *filename, char *openmode);

size_t fread(void *ptr, size_t size, size_t nobj, FILE *stream)

fread reads from stream into the array ptr at most nobj objects of size size. fread returns the number of objects read; this may be less than the number requested. feof and ferror must be used to determine status.

函数 fread 从 stream 中读入最多 nobj 个对象到 ptr 指向的数组中,每个对象的尺寸是 size
LinuxBirdMan 2011-03-18
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "conio.h"

main()
{
char data[15];
memset(data, 0, 15);
FILE *fp;
fp=fopen("bcf.bat","r");
fread(data,15,1,fp);
//printf("k is %s\n",data);
getch();

}

LinuxBirdMan 2011-03-18
  • 打赏
  • 举报
回复
#include "stdio.h"
#include "conio.h"

main()
{
char data[1024];
memset(data, 0, 1024);
FILE *fp;
fp=fopen("file bcf","r");
fread(data,1024,1,fp);
printf("k is %f\n",k);
getch();

}

witwolf 2011-03-18
  • 打赏
  • 举报
回复
fp=fopen("file bcf","r");把file bcf 改为bcf.bat
LinuxBirdMan 2011-03-18
  • 打赏
  • 举报
回复
你要用char类型的数组。。。。。。。从文件里读出来的都是字符。。。不是数字。。。。
aa1298 2011-03-18
  • 打赏
  • 举报
回复
还有个问题 指针可以用double型的吗?
LinuxBirdMan 2011-03-18
  • 打赏
  • 举报
回复
文件路径都不对噢。。。文件后缀名也没。。。缓冲区最好定义一个数组。。。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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