一个文件读写问题,急~~
#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 写到文件中