c语言文件读写,如何正确的存取多位数(int)

最近在写一个验证的小程序,被多位数的存取难到了,研究了好几天,一无所获。
我想将一个6位的整型数据(如:123456)写入到一个新的文件中,我用fputc( )写入完成,可用fgetc( )调出来一看,都是错的,请教大侠,怎样才能正确的存储并读出6位数(当然,只要是多位数存取的就可以了),不甚感激。

      C语言将整形数据存储到文件中,可采用两种方法,1、二进制存取 2、字符方式存取。

      因存储方式的不同,读取也要采用相应的方式进行操作,否则不能正确得到存储的数据。

    二进制存取

    二进制方式是将原数据的内存格式存储到文件中,在同类型的机器上可以正确的读取。但如果换成不同类型的机器则会出现数据解释错误,因此,具有不可移植性。

    这种方式,采用的存取函数相应为:fwrite()和fread().

    如:

    int num=12345;

    FILE *fp=fopen( "datafile", "wb" );

    fwrite( &num, sizeof(int), 1, fp ); //将num数据写入文件

    ....

    FILE *fp=fopen( "datafile", "rb" );

    fread( &num, sizeof(int), 1, fp ); //读文件数据到num中

    字符方式存取

    字符方式是将数据的可见内容,以字符形式存储到文件中,可以在任何机器上阅读并读取,方便不同系统间的数据传递。

    这种方式,采用的存取函数相应为:fprintf()和fscanf().

    如:

    int num=0;

    FILE *fp=fopen( "datafile", "w" );

    fprintf(fp, "%d\n", num ); //将num数据写入文件

    ....

    FILE *fp=fopen( "datafile", "r" );

    fscanf(fp,"%d", &num ); //读文件数据到num中

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-24
只要是该整数不超过该编译系统int 或者long 的最大长度,直接用fprintf(fp, "%d", x)写出
再用fscanf(fp, "%d", &y)就可了,长整型用"%ld"
注意如果有多个数字,数字中间的分隔符为空格、跳格或者回车
第2个回答  推荐于2017-11-24
int fputc ( int character, FILE * stream )
fputc 的参数是 char类型
整形数据写入文件可以用格式化输出函数 int fprintf ( FILE * stream, const char * format, ... );
用法和printf函数类似,例如:
#include <stdio.h>

int main ()
{
FILE * pFile;
int n=123456;
pFile = fopen ("myfile.txt","w");
fprintf (pFile, " %d ",n);
fclose (pFile);

return 0;
}
将123456写入文件myfile.txt

读出用格式化输入函数 int fscanf ( FILE * stream, const char * format, ... ); 例如
#include <stdio.h>

int main ()
{
int n;
FILE * pFile;

pFile = fopen ("myfile.txt","w+");
fscanf (pFile, "%d", &n);
fclose (pFile);
return 0;
} //将123456由文件myfile.txt读入变量n本回答被提问者采纳
第3个回答  2011-08-24
位数无关紧要,主要是存取的方式,换句话说123456是什么变量,一个int,还是字符串
你可以
fwrite( buffer //一个指针,要写的数据在哪
,size //要写多少字节
,count //按照字节数量,写几次
,stream //文件指针(流指针)
);

fread( buffer //一个指针,要读的数据读出来放在哪
,size //要读多少字节
,count //按照字节数量,读几次
,stream //文件指针(流指针)
);
不推荐fprintf和fscanf,原因:效率低下。。。
fputc、fgetc没用过,不评论
第4个回答  2011-08-24
酱油