C语言中的文件格式化读写函数

合集下载

C语言中的输入输出函数总结.doc

C语言中的输入输出函数总结.doc

C语言中的输入输出函数总结.docC语言中的输入输出函数是程序中非常重要的部分,主要负责对数据的输入和输出进行处理。

在输入时,我们需要将外部数据读取到程序中进行内部处理,而输出则需要将程序内部处理过的结果输出到外部。

1. scanf函数:用于从标准输入设备(键盘)中读取输入数据并格式化。

2. printf函数:用于将输出数据按照设置的格式输出到标准输出设备(屏幕)上。

5. puts函数:用于将一个字符串输出到标准输出设备上,并自动写入换行符。

8. fgets函数:用于从指定文件中读取一行字符串。

这些函数都需要包含stdio.h头文件才能使用。

下面我们对这些函数进行简要介绍:1. scanf函数scanf函数的语法为:scanf(“格式字符串”,变量名1,变量名2,……);其中格式字符串用来指定输入的数据类型和格式,变量名用来接收输入的数据。

例如,要输入一个整数可以使用如下代码:int num;scanf("%d",&num);2. printf函数3. getchar函数getchar函数的语法为:getchar(),用于从标准输入设备中读取一个字符。

例如,要读取一个字符并输出可以使用如下代码:char c = getchar();printf("c=%c",c);5. puts函数char str[] = "hello world";puts(str);fputs函数的语法为:fputs(字符串,文件指针),用于将一个字符串输出到指定文件中。

FILE *fp;char str[]="hello world";fp=fopen("test.txt","w");fputs(str,fp);fclose(fp);总结:C语言中的输入输出函数可以处理各种数据类型,方便快捷地进行输入输出操作。

7文件

7文件

例:从fp所指的文件中读出一个整数和 一个字符串赋给变量i和指针s所指的空 间

使用方式:
文 本 文 件 (ASCII) 使用方式 含 义 打开只读文件 “r” 建立只写新文件 “w” 打开添加写文件 “a” 打开读/写文件 “ r+ ” 建立读/写新文件 “ w +” 打开读/写文件 “ a +” 二 进 制 文 件(Binary) 使用方式 含 义 打开只读文件 “ rb ” 建立只写新文件 “ wb ” 打开添加写文件 “ ab ” 打开读/写文件 “ rb+ ” “ wb+ ” 建立读/写新文件 打开读/写文件 “ ab+ ”
2. fputs() int fputs(char *str,FILE *fp )
/*功能是把字符串写入fp所指的文件中,成功则返回0, 否则,返回EOF(-1)*/
例:从c3.txt文件中读入一个含10个字符 的字符串,并从显示器输出。
#include<stdio.h> #include<stdlib.h> void main() { FILE *fp; char str[11]; if(( fp = fopen("c3.txt","r"))==NULL) { printf("Cannot open file!"); exit(1);} fgets(str,11,fp); printf("\n%s\n",str); fclose(fp); }
例:使用fputs()实现从键盘输入一行 字符,写入一个文件c2.txt中。
#include<stdio.h> #include<stdlib.h> void main() {FILE *fp; char ch,st[20]; if(( fp = fopen("c2.txt","w+")) == NULL) {printf("Cannot open file!"); exit(1);} printf("input a string:\n"); scanf("%s",st); fputs(st,fp); fclose(fp);}

c语言字符串格式化函数

c语言字符串格式化函数

c语言字符串格式化函数
在C语言中,字符串格式化函数是一种非常重要的函数。

它们允许我们将不同类型的数据转换为字符串,并使用一些格式指定符号来控制输出的样式。

C语言中最常用的字符串格式化函数是printf()函数。

它允许我们将数据转换为字符串,并使用一些格式指定符号来控制输出的样式。

下面是一些常用的格式指定符号:
- %d: 以10进制形式输出整数。

- %x: 以16进制形式输出整数。

- %o: 以8进制形式输出整数。

- %f: 以浮点数形式输出数值。

- %c: 输出单个字符。

- %s: 输出字符串。

- %p: 输出指针地址。

除了printf()函数外,C语言中还有其他一些字符串格式化函数,例如sprintf()函数和snprintf()函数。

这些函数与printf()函数
类似,但它们输出的结果是存储在字符串中的,而不是直接输出到屏幕上。

在使用字符串格式化函数时,我们需要注意一些安全性问题。

由于格式化字符串可以根据不同的参数输出不同的内容,因此它们很容易受到缓冲区溢出攻击。

为了避免这种情况,我们可以使用安全版本的字符串格式化函数,如snprintf()函数,它允许我们指定输出的
最大长度。

总之,在C语言中,字符串格式化函数是非常有用的函数,它们允许我们将不同类型的数据转换为字符串,并使用一些格式指定符号来控制输出的样式。

但我们需要注意安全性问题,以避免缓冲区溢出攻击。

C语言中常用函数大全

C语言中常用函数大全

(一)输入输出常用函数1,printf(1)有符号int%[-][+][0][width][.precision][l][h] d-:左对齐+:正数前加‘+’0:右对齐,acwidth<width,左补零.precision:至少输出位数。

若实际的位数>.precision,按实际输出,否者左边补零(2)无符号int%[-][#][0][width][.precision][l][h] u|o|x|X#:”%o %x/X”输出0,0x,0X.precision:同上,TC/BC包含0x/X,VC下不包含(3)实数输出%[-][+][#][0][width][.precision][l][L] f|e|E|g|G#:必须输出小数点.precision:小数位数(四舍五入)(4)字符和字符串的输出%[-][0][width] c %[-][0][width] [.precision] s.precision:S的前precision位2,scanf%[*][width] [l][h]TypeWith:指定输入数据的宽度,遇空格、Tab、\n结束*:抑制符scanf(“%2d%*2d%3d”,&num1,&num2) 输入123456789\n;num1==12,num2==567.注意:(1)指定width时,读取相应width位,但按需赋值Scanf(“%3c%3c”,&ch1,&ch2)输入a bc d efg ch1==a ch2==d(2)%c 输入单字符时“空格、转义字符”均是有效字符(二)ascll字符/字符串/文件函数1;字符非格式化输入函数(1)int getchar(void) 接受字符,以回车结束,回显(2)int getc(FILE*stream) 从stream中接受字符,以回车结束,回显stream=stdin时,(1)==(2)(3)int getche(void) 直接读取字符,回显conio.h(4)int getchar(void) 直接读取字符,不回显conio.h注意:(1,2)对于回车键返回‘\n’(3,4)对于回车键返回‘\r’2;字符/串非格式化输出函数(1)int putchar(int c) 正常返回字符代码值,出错返回EOF(2)int putc(int c,FILE*stream) 正常返回字符代码值,出错返回EOF stream==stdout(1)=(2)(3)int puts(char*stream) 自动回车换行1;字符串的赋值#include< string.h memory.h >Void *memset (void *s, char ch, unsigned n)将以S为首地址的,一片连续的N个字节内存单元赋值为CH.Void *memcpy ( void *d, void*s, unsigned n)将以S为首地址的一片连续的N个字节内存单元的值拷贝到以D为首地址的一片连续的内存单元中。

c语言中读取文件大小的函数

c语言中读取文件大小的函数

c语言中读取文件大小的函数摘要:1.文件读取概述2.C语言中读取文件大小的函数a.fseek函数b.ftell函数c.fgetpos函数d.setpos函数3.函数使用示例4.总结正文:在C语言中,读取文件大小是一个常见的操作。

文件大小是指文件在磁盘上存储的字节数。

在处理文件时,了解文件的大小是很重要的。

本篇文章将介绍C语言中读取文件大小的函数。

1.文件读取概述在C语言中,有多种函数可以实现文件读取。

这些函数包括fopen、fclose、fread、fwrite等。

然而,这些函数并不能直接提供文件大小信息。

要获取文件大小,需要使用特定的函数。

2.C语言中读取文件大小的函数在C语言中,有四个函数可以用来读取文件大小:fseek、ftell、fgetpos 和setpos。

这四个函数都可以获取文件的大小,但它们的实现方式略有不同。

a.fseek函数fseek函数用于在文件中设置读取位置。

通过该函数,可以将文件读取指针定位到文件末尾,从而获取文件大小。

fseek函数的原型如下:```coff_t fseek(FILE *stream, off_t offset, int whence);```其中,`stream`是文件指针,`offset`是要移动的偏移量,`whence`是移动的基准。

要获取文件大小,可以使用以下代码:```cFILE *file = fopen("example.txt", "rb");if (file == NULL) {printf("Error opening file.");return 1;}fseek(file, 0, SEEK_END); // 将文件指针移动到文件末尾long file_size = ftell(file); // 获取文件大小printf("File size: %ld bytes", file_size);fclose(file);```b.ftell函数ftell函数用于获取当前文件读取指针的位置。

fprintf_fscan

fprintf_fscan

对文件的读和写是最常用的文件操作。

在C语言中提供了多种文件读写的函数:·字符读写函数:fgetc和fputc·字符串读写函数:fgets和fputs·数据块读写函数:fread和fwrite·格式化读写函数:fscanf和fprinf随着每次数据的读取,文件流指针fp都作相应的移动使用以上函数都要求包含头文件stdio.h。

例子都来自msdn1 fprintf——Print formatted data to a stream#include <stdio.h>#include <process.h>FILE *stream;void main( void ){int i = 10;double fp = 1.5;char s[] = "this is a string";char c = '\n';stream = fopen( "fprintf.out", "w" );fprintf( stream, "%s%c", s, c );fprintf( stream, "%d\n", i );fprintf( stream, "%f\n", fp );fclose( stream );system( "type fprintf.out" );}Outputthis is a string101.5000002 fscanf——Read formatted data from a stream#include <stdio.h>FILE *stream;void main( void ){long l;float fp;char s[81];char c;stream = fopen( "fscanf.out", "w+" );if( stream == NULL )printf( "The file fscanf.out was not opened\n" );else{fprintf( stream, "%s %ld %f %c", "a-string",65000, 3.14159, 'x' );/* Set pointer to beginning of file: */fseek( stream, 0L, SEEK_SET );/* Read data back from file: */fscanf( stream, "%s", s );fscanf( stream, "%ld", &l );fscanf( stream, "%f", &fp );fscanf( stream, "%c", &c );/* Output data read: */printf( "%s/n", s );printf( "%ld/n", l );printf( "%f/n", fp );printf( "%c/n", c );fclose( stream );}}Outputa-string650003.141590x3 fread——Reads data from a stream4 fwrite——Writes data to a stream读数据块函数调用的一般形式为:fread(buffer,size,count,fp);写数据块函数调用的一般形式为:fwrite(buffer,size,count,fp);其中:buffer 是一个指针,在fread函数中,它表示存放输入数据的首地址。

自己动手写C语言格式化输出函数(一)

自己动手写C语言格式化输出函数(一)

⾃⼰动⼿写C语⾔格式化输出函数(⼀)printf系列函数,包括fprintf、sprintf函数等,其功能是将C语⾔的所有基本数据类型按⽤户要求进⾏格式化输出。

printf函数⼏乎是所有学习C语⾔的⼈接触到的第⼀个函数,是C语⾔标准中使⽤频率最⾼的函数。

printf函数是C语⾔标准函数中最著名的可变参数函数,看见printf这个函数名,就想起了C语⾔的说法⼀点也不过分,因此,可以说是C语⾔标准函数中的最具标志性的函数。

printf系列函数。

在DOS环境下,这⼀系列输出函数涵盖了PC机所能⽤到的所有输出设备,所以printf系列函数也是C语⾔中最复杂的函数。

当然,随着DOS时代的结束,不仅printf系列函数的作⽤减弱了,就连C语⾔本⾝也被压缩到了最⼩的应⽤领域。

本⽂写的sprintfA函数,也是应⼀个⼩友要求写的⼏个函数之⼀,包括我昨天发布的《》中的FloatToStr函数,是⽤来学习⽤的。

之所以取名为sprintfA,不仅是区别系统本⾝的sprintf函数,同时也因为在Windows下,A表⽰的是传统的ANSI函数。

因为在Windows下,printf系列函数也“与时俱进”了,如wprintf 等就是在宽字符环境下的输出函数。

由于我在sprintfA函数中使⽤了Windows的宽字符转换函数,因此该函数只适⽤于Windows环境。

由于sprintfA函数代码⽐较长,将分为多篇⽂章发布,《》⼀⽂中的代码也应算作⼀篇:⼀、数据定义:1 typedef struct2 {3 INT type; // 数据长度类型4 INT width; // 数据最⼩宽度5 INT precision; // 数据精度6 BOOL left; // 是否居左7 BOOL zero; // 是否前导零8 INT decimals; // 浮点数: 1强制⼩数位; 16进制: -1: 0x, 1: 0X9 INT negative; // 符号:-1: '-'; 1: '+'10 LPSTR param; // 参数指针11 }FormatRec;1213 typedef long long LLONG, *PLLONG;14 typedef unsigned long long ULLONG, *PULLONG;1516#define TYPE_CHAR 017#define TYPE_SHORT 118#define TYPE_GENERAL 219#define TYPE_LONG 320#define TYPE_LLONG 42122#define PTR_SIZE sizeof(VOID*)23#define TypeSize(size) (((size + PTR_SIZE - 1) / PTR_SIZE) * PTR_SIZE)2425#define TS_PTR PTR_SIZE26#define TS_CHAR TypeSize(sizeof(CHAR))27#define TS_WCHAR TypeSize(sizeof(WCHAR))28#define TS_SHORT TypeSize(sizeof(SHORT))29#define TS_INT TypeSize(sizeof(INT))30#define TS_LONG TypeSize(sizeof(LONG))31#define TS_LLONG TypeSize(sizeof(LLONG))32#define TS_FLOAT TypeSize(sizeof(FLOAT))33#define TS_DOUBLE TypeSize(sizeof(double))34#define TS_EXTENDED TypeSize(sizeof(EXTENDED))3536#define CHAR_SPACE ' '37#define CHAR_ZERO '0'38#define CHAR_POS '+'39#define CHAR_NEG '-'4041#define HEX_PREFIX_U "0X"42#define HEX_PREFIX_L "0x"4344#define MAX_DIGITS_SIZE 40TYPE_XXXX是数据类型标记,对应于FormatRec.type字段。

c语言中读取文件大小的函数

c语言中读取文件大小的函数

c语言中读取文件大小的函数摘要:1.文件读取概述2.C语言中读取文件大小的函数a.fseek函数b.ftell函数c.fscanf函数d.getchar函数3.文件读取函数的注意事项4.总结正文:在C语言中,读取文件大小是一个常见的操作。

文件大小是指文件在磁盘上存储的字节数。

为了读取文件大小,我们可以使用以下函数:1.fseek函数fseek函数用于改变文件指针的位置。

通过该函数,我们可以将文件指针定位到文件末尾,从而读取文件大小。

fseek函数的原型如下:```cvoid fseek(FILE *stream, long offset, int origin);```参数说明:- `stream`: 文件指针- `offset`: 偏移量,正数为从文件头向文件尾偏移,负数为从文件尾向文件头偏移- `origin`: 基准位置,0表示文件头,1表示当前位置,2表示文件尾2.ftell函数ftell函数用于获取当前文件指针的位置。

通过该函数,我们可以获取文件末尾的偏移量,从而计算文件大小。

ftell函数的原型如下:```clong ftell(FILE *stream);```参数说明:- `stream`: 文件指针3.fscanf函数fscanf函数用于从文件中读取数据。

通过该函数,我们可以读取文件大小并将其存储在变量中。

fscanf函数的原型如下:```cint fscanf(FILE *stream, const char *format, ...);```参数说明:- `stream`: 文件指针- `format`: 格式控制字符串- `...`: 可变参数列表,用于存储读取到的数据为了读取文件大小,我们可以设置格式控制字符串为`%ld`,然后调用fscanf函数。

需要注意的是,fscanf函数可能会遇到文件结束符或读取错误,因此需要检查返回值以确认读取是否成功。

4.getchar函数getchar函数用于从文件中读取一个字符。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C 语言中的文件格式化读写函数: fprintf 和 fscanf
fprintf 函数和 fscanf 函数和 printf 和 scanf 相比,就是多了个 f 前缀,这个 f 当然就是指的 file,也就是文件了,后两者是操作的对象是终端设备,前者则 是针对磁盘文件的操作,因此 fprintf 函数和 fscanf 函数就是了 C 语言中文件的 格式化输入输出函数。 如果做一个学生成绩管理系统吧,那就要设计个数据结构保存学生的信 息,姓名、学号、成绩等等的,就要使用到结构体 struct 了。 struct student { char chName[20]; //姓名 int nID; //学号 float fScores[3]; //3 门课的成绩 }; 上面就是一个比较简单的用于保存学生成绩信息的结构体类型,其中包括学生 的姓名、学号以及三门课的成绩,下面介绍如何使用 fprintf 函数和 fscanf 函数 来读写这种类型的数据。 fprintf 函数和 fscanf 函数调用方式 fprintf(文件结构指针,格式字符串,输出表列); fscanf(文件结构指针,格式字符串,输出表列); 两个函数的参数都一样,怎么写到文件中的就怎么读进来,还是比较方便 的,唯一不同的是,这里多了个文件结构指针的参数。 fprintf 函数和 fscanf 函数示例程序 下面的示例程序包括 fprintf 写入文件、fscanf 读取文件以及 printf 输出到屏幕 等操作。
int main() { FILE *pWrite,*pRead; struct student tStu,tStu2; char *pName = “letuknowit”; pWrite=fopen(“stu_scores.txt”,“w”); if(NULL == pWrite) { return; } //初始化结构体信息,用于写入文件 memcpy(tStu.chName,pName,20); tStu.nID = 1; tStu.fScores[0] = 89.0; tStu.fScores[1] = 87.0; tStu.fScores[2] = 88.0; //写入数据到文件中 fprintf(pWrite,“%d %s %f %f %f\n“,tStu.nID,tStu.chName,tStu.fSc ores[0],tStu.fScores[1],tStu.fScores[2]); fclose(res.txt”,“r”); if(NULL == pRead) { return; } //从文件中读取数据(主要下面参数中的&) fscanf(pRead,“%d %s %f %f %f\n“,&tStu2.nID,tStu2.chName,&tStu2. fScores[0],&tStu2.fScores[1],&tStu2.fScores[2]); fclose(pRead); //打印读取的数据到屏幕上 printf(“%d %s %.1f %.1f %.1f\n“,tStu2.nID,tStu2.chName,tStu2.fS cores[0],tStu2.fScores[1],tStu2.fScores[2]); return 0; }
相关文档
最新文档