c语言实现以二进制位的方式写文本文件。运行8次,每次输入一个二进制位,最后打开检查文件。

我会用C语言写文本文件,但是对于二进制方式的读写还是不清楚。我想要这么个控制台程序,其输入只能为0或者1。我编译好后,共需要运行8次。每次提示我输入一个二进制位。比如说第一次运行我输入0,然后关闭,第二次运行,输入0,第三次运行,输入1,直到一直运行8次,依次为0010 0100。现在我用记事本打开D:\1.txt,可以看到上面int[8]对应的ASCII码的字符$.

测试用例从http://baike.baidu.com/view/15482.htm?fr=aladdin随机取。

本程序只实现了功能,应再加一些错误检查才好,鉴于实现复杂,影响主题,就不写了
#include <stdio.h>

int write_file( char *file, int bit )
{
FILE *fp=fopen(file, "r+b" ); //以读写方式打开二进制文件
char ch=0;
if ( fp == NULL )
fp=fopen( file,"w" ); //第一次没有文件时会找不到文件
else
{
fread( &ch, 1, 1, fp ) ;
ch <<=1 ;
if ( bit )
ch |= 0x01 ;
fseek( fp, 0, SEEK_SET );
}
if ( fwrite( &ch, 1,1, fp ) != 1 ) //将ch写入文件,以二进制写方式
{
return -1;
}
fclose(fp);
return 0;
}

int main()
{
char filename[128]={"D:\\abc.txt"}; //为了方便就不输入文件名了
/* 放开这里可以输入文件名
printf( "input filename:" );
scanf("%s", filename );
*/
int bit ;
printf("input a num:");
while( scanf("%d", &bit )!=1 || (bit!=0 && bit!=1) )
{
fflush( stdin);
printf("input error,re-input\n" );
}
if ( write_file( filename, bit ) )
{
printf("write file error, clear file and re-do\n" );
return -1;
}

return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-02
生成1.txt?
靠C语言?不用windows API?
还要关闭?再打开?不行吧追问

c语言有写文件的函数,比如fwrite,我的题目就是要求用这个函数。

相似回答