首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个文件读写有关问题,

2012-02-04 
一个文件读写问题,急~~#includestdio.h #includestdlib.h #includefcntl.h #includestring.h intm

一个文件读写问题,急~~
#include   "stdio.h "  
#include   "stdlib.h "  
#include   "fcntl.h "            
#include   "string.h "  

int   main()
{
        char   FileName[]= "read.txt ";
        char   *buff= "1212121212 ";
        int   buff_length=10;
        int   write_handle;
        if((write_handle=open(FileName,O_BINARY|O_WRONLY|O_CREAT)) <0)  
                    /*   以只写,二进制方式打开文件,并返回句柄   */  
                  printf( "open   output   file   error! ");  
        write(write_handle,buff,buff_length);  
        close(write_handle);
        system( "pause ");
        return   0;  
}
我想把buff以二进制的方式输入read.txt文件。
为什么运行完后的read.txt还是“1212121212”,而不是对应的二进制。
急,谢谢~

[解决办法]
你只是用二进制方式打开了文件,并没有把buff中的内容变成二进制呀。
当然不是二进制了。
思路
1.自己在写入前就把字符串内容做好转换;
2.好久没用c了,不知道有没有写入文件指定格式的函数,比如fprintf得%s。如果有,指定成二进制的格式。

个人意见,楼主参考。
[解决办法]
txt文本文件,系统按文本字符解释显示的,用ue看
[解决办法]
我想要的结果是打开txt文档的时候看到的是二进制,是不是像kingofbull(大力牛魔王)说的一定要先转化再写入?具体有相关函数吗
----------------------------------------------
我隐约记得有相关的函数。inttobyte???大约3年没写过c了,记不清楚了。楼主你可以查一下c得库函数。
[解决办法]
是不是要这个??
int main()
{
char FileName[]= "c:\\read.txt ";
char *buff= "121212121A ";
char cc;//cc
char cs[BYTESIZE+1]={};
char cs1[BYTESIZE+1]= "00000000 ";
char wcs[BYTESIZE+1]={};
int len=0;
int count=0;
FILE *f1;

f1=fopen(FileName, "r+ ");
if(f1==NULL)
{
printf( "open output file error! ");
return 0;
}
while(*buff!= '\0 ')
{
cc=*buff++;
itoa(cc,cs,2);
////格式化到8位..前置0
len=strlen(cs);
count=BYTESIZE-len;
strcpy(wcs,cs1);
strcpy(wcs+count,cs);
fprintf(f1, "%s ",wcs);
}
fclose(f1);
system( "pause ");
return 0;
}

[解决办法]
上面漏掉这个了:((
const short BYTESIZE=8;
[解决办法]
char FileName[]= "read.txt ";
char *buff= "1212121212 ";
int buff_length=10;
int i = atoi(buff);
int write_handle;
if((write_handle=open(FileName,O_BINARY|O_WRONLY|O_CREAT)) <0)
/* 以只写,二进制方式打开文件,并返回句柄 */
printf( "open output file error! ");
write(write_handle,&i,4);
/* write(write_handle,buff,buff_length); */
close(write_handle);
system( "pause ");
return 0;

[解决办法]
楼主搞错概念了吧 ?

2进制方式写文件,


是指的 把数据按照2进制流方式写入文件,
而不是说把数据 以2进制 方式写入文件。

2进制流写文件,
就是将内存中的数据原文写到文件中,
不管其意义如何 ~
(相比字符方式的话,可能会有一些字符由于意义被改动,比如回车换行字符)
[解决办法]
需要手动将读取的数据转换为 2 进制码,
然后写入文件。
可以这样:

char *buff= "1212121212 ";
char data[160]={0}, tmp[10]={0};
int index=0;

while(*buff != '\0 ') //循环完成数据转换到 2 进制
{
itoa(*buff, tmp, 2);
index += sprintf(data+index, "%s ", tmp);
buff++;
}
...... //把 data 写到文件中

热点排行