如何c语言中如何将print信息写入一个文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何c语言中如何将print信息写入一个文件相关的知识,希望对你有一定的参考价值。

参考技术A C语言里printf函数格式控制符的完整格式
printf的格式控制的完整格式:
% - 0 m.n l或h 格式字符
下面对组成格式说明的各项加以说明:
①%:表示格式说明的起始符号,不可缺少。
②-:有-表示左对齐输出,如省略表示右对齐输出。
③0:有0表示指定空位填0,如省略表示指定空位不填。
④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。
⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。
--------------------------------------------------------------------------------
格式字符
格式字符用以指定输出项的数据类型和输出格式。
①d格式:用来输出十进制整数。有以下几种用法:
%d:按整型数据的实际长度输出。
%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
%ld:输出长整型数据。
②o格式:以无符号八进制形式输出整数。对长整型可以用"%lo"格式输出。同样也可以指定字段宽度用“%mo”格式输出。
例:
main()
int a = -1;
printf("%d, %o", a, a);

运行结果:-1,177777
程序解析:-1在内存单元中(以补码形式存放)为(1111111111111111)2,转换为八进制数为(177777)8。
③x格式:以无符号十六进制形式输出整数。对长整型可以用"%lx"格式输出。同样也可以指定字段宽度用"%mx"格式输出。
④u格式:以无符号十进制形式输出整数。对长整型可以用"%lu"格式输出。同样也可以指定字段宽度用“%mu”格式输出。
⑤c格式:输出一个字符。
⑥s格式:用来输出一个串。有几中用法
%s:例如:printf("%s", "CHINA")输出"CHINA"字符串(不包括双引号)。
%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。
%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。
%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。
%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出。
⑦f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:
%f:不指定宽度,整数部分全部输出并输出6位小数。
%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。
%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。
⑧e格式:以指数形式输出实数。可用以下形式:
%e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。
%m.ne和%-m.ne:m、n和”-”字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。
⑨g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。
--------------------------------------------------------------------------------
关于printf函数的进一步说明:
如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示,如:
printf("%f%%", 1.0/3);
输出0.333333%。
--------------------------------------------------------------------------------
对于单精度数,使用%f格式符输出时,仅前7位是有效数字,小数6位.
对于双精度数,使用%lf格式符输出时,前16位是有效数字,小数6位.
拾遗
由高手指点
对于m.n的格式还可以用如下方法表示(例)
char ch[20];
printf("%*.*s\n",m,n,ch);
前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。我想这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。
今天(06.6.9)又看到一种输出格式 %n 可以将所输出字符串的长度值赋绐一个变量, 见下例:
int slen;
printf("hello world%n", &slen);
执行后变量被赋值为11。
又查了一下, 看到一篇文章(查看)说这种格式输出已经确认为一个安全隐患,并且已禁用。再搜搜果然这种用法都被用来搞什么溢出、漏洞之类的,随便找了一个:格式化字符串攻击笔记
特别注意下%*.*s这种用法

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中

参考技术A 只要是该整数不超过该编译系统int 或者long 的最大长度,直接用fprintf(fp, "%d", x)写出
再用fscanf(fp, "%d", &y)就可了,长整型用"%ld"
注意如果有多个数字,数字中间的分隔符为空格、跳格或者回车
参考技术B 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本回答被提问者采纳
参考技术C 位数无关紧要,主要是存取的方式,换句话说123456是什么变量,一个int,还是字符串
你可以
fwrite( buffer //一个指针,要写的数据在哪
,size //要写多少字节
,count //按照字节数量,写几次
,stream //文件指针(流指针)
);

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

以上是关于如何c语言中如何将print信息写入一个文件的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何以插入方式写入文件

C语言编程中如何将一个文件中的信息转入到另一个文件

C语言编程中如何将一个文件中的信息转入到另一个文件

c语言写入文件方法

C语言如何写入文本文件

C语言写入文件,文件操作