c语言中的fgets与fputs函数

合集下载

C语言文件操作函数大全

C语言文件操作函数大全

C语言文件操作函数13.1C语言文件1,两种文件存取方式(输入,输出方式)顺序存取直接存取2,数据的两种存放形式文本文件二进制文件13.2文件指针定义文件类型指针变量的一般形式:FILE *指针变量名;例如:FILE *fp1,*fp2;13.3打开文件在使用文件之前,需打开文件.在C里使用fopen函数打开文件.格式为:fopen(文件名,文件使用方式);此函数返回一个指向FILE类型的指针.如:FILE *fp;fp=fopen("file_1","r");如果调用成功,fp就指向file_1,否则返回为NULL,所以为了保证文件的正确使用,要进行测试.采用如下语句:If((fp=fopen("file_1","r"))==NULL){printf("Cannot open this file\n");exit(0);}最常用的文件使用方式及其含义如下:1,"r".为读而打开文本文件.(不存在则出错) 2,"rb".为读而打开二进制文件.3,"w".为写而打开文本文件.(若不存在则新建,反之,则从文件起始位置写,原内容将被覆盖) 4,"wb".为写而打开二进制文件.5,"a".为在文件后面添加数据而打开文本文件.(若不存在,则新建;反之,在原文件后追加)6,"ab".为在文件后面添加数据而打开一个二进制文件.最常用的文件使用方式及其含义如下:7,"r+".为读和写而打开文本文件.(读时,从头开始;在写数据时,新数据只覆盖所占的空间,其后不变) 8,"rb+".为读和写而打开二进制文件.只是在随后的读写时,可以由位置函数设置读和写的起始位置. 9,"w+".首先建立一个新文件,进行写操作,随后可以从头开始读.(若文件存在,原内容将全部消失) 10,"wb+".功能与"w+"同.只是在随后的读写时,可以由位置函数设置读和写的起始位置.最常用的文件使用方式及其含义如下:11,"a+".功能与"a"相同;只是在文件尾部添加新的数据后,可以从头开始读.12,"ab+".功能与"a+"相同;只是在文件尾部添加新数据之后,可以由位置函数设置开始读的起始位置. 13.4关闭文件当文件的读写操作完成之后,使用fclose函数关闭文件.格式如下:fclose(文件指针)如:fclose(fp);13.5调用fgetc和fputc函数进行输入和输出1,调用fputc函数输出一个字符功能是:将字符ch写到文件指针fp所指的文件中去.当输出成功,putc函数返回所输出的字符;否则,返回一个EOF值.EOF是在stdio.h库函数文件中定义的符号常量,其值等于-1.13.5调用fgetc和fputc函数进行输入和输出例如:把从键盘输入的文本按原样输出到名为file_1.dat文件中,用字符@作为键盘输入结束标志. #includeVoid main(){FILE *fpout;char ch;if(fpout=fpopen("file_1","w")==NULL){printf("Cannot open this file!\n");exit(0);}ch=getchar();while(ch!='@'){ fputc(ch,fpout); ch=getchar(); }fclose(fpout);}2.调用fgetc函数输入一个字符功能是:从pf指定的文件中读如一个字符,并把它作为函数值返回.例如:把一个已存在磁盘上的file_1.dat文本文件中的内容,原样输出到终端屏幕上.#includevoid main(){FILE *fpin;char ch;if((fpin=fopen("file_1.dat","r"))==NULL){ printf("Cann't open this file!\n");exit(0);} ch=fgetc(fpin);while (ch!=EOF){ putchar(ch); ch=fgetc(fpin);}fclose(fpin);}13.6判断文件结束函数feofEOF可以作为文本文件的结束标志,但不能作为二进制文件的结束符.feof函数既可以判断二进制文件,又可以判断文本文件.例:编写程序,用于把一个文本文件(源)复制到另一个文件(目的)中,源文件名和目的文件名由命令行输入.命令形式如下:可执行程序名源文件名目的文件名#includevoid filecopy(FILE* ,FILE *);void main(int argc,char *argv[]){FILE *fpin,*fpout;if(argc==3){ fpin=fopen(argv[1],"r");fpout=fopen(argv[2],"w");filecopy(fpin,fpout);fclose(fpin);fclose(fpout);}else if(argc>3)printf("The file names too many!!\n";elseprintf("There are no file names for input or output!!\n );}void filecopy(FILE *fpin,FILE *fpout){char ch;ch=getc(fpin);while(!feof(fpin)){putc(ch,fpout); ch=getc(fpin);}}13.7fscanf函数和fprintf函数1,fscanf函数fscanf只能从文本文件中按格式输入,和scanf函数相似,只不过输入的对象是磁盘上文本文件中的数据.调用形式为:fscanf(文件指针,格式控制字符串,输入项表)例如:fscanf(fp,"%d%d",&a,&b);fscanf(stdin,"%d%d",&a,&b);等价于scanf("%d%d",&a,&b);3.fprintf函数fprintf函数按格式将内存中的数据转换成对应的字符,并以ASCII代码形式输出到文本文件中.Fprintf 函数和printf函数相似,只是将输出的内容按格式存放到磁盘的文本文件中.调用形式如下:fprintf(文件指针,格式控制字符串,输出项表)如:fprintf(fp,"%d %d",x,y);以下语句 fprintf(stdout,"%d %d",x,y)13.8fgets函数和fputs函数1,fgets函数fgets函数用来从文件中读入字符串.调用形式如下: fgets(str,n,fp);函数功能是:从fp所指文件中读入n-1个字符放入str 为起始地址的空间内;如果在未读满n-1个字符时,则遇到换行符或一个EOF结束本次读操作,并已str作为函数值返回. 13.8fgets函数和fputs函数2,fputs函数fput函数把字符串输出到文件中.函数调用形式如下: fputs(str,fp);注意:为了便于读入,在输出字符串时,应当人为的加诸如"\n"这样的字符串.#include <stdio.h>#include <iostream>int main(int argc, char *argv[]){char arr[10] ;char *ap = "hello!" ;FILE *fp ;if ((fp = fopen("hello.txt", "wt+")) == NULL) {printf("error!") ;exit(1) ;}fputs(ap, fp) ;rewind(fp) ; //fgets(arr, 10, fp) ;printf("%s\n", arr) ;fclose(fp) ;return 0 ;}13.9fread函数和fwrite函数例如有如下结构体:struct st{char num[8];float mk[5];}pers[30];以下循环将把这30个元素中的数据输出到fp所指文件中.for(i=0;i<30;i++)fwrite(&pers[i],sizeof(struct st),1,fp);13.9fread函数和fwrite函数以下语句从fp所指的文件中再次将每个学生数据逐个读入到pers数组中.i=0;fread(&pers[i],sizeof(struct st),1,fp);while(!feof(fp)){ i++;fread(&pers[i],sizeof(struct st),1,fp);}13.10文件定位函数1,fseek函数fseek函数用来移动文件位置指针到指定的位置上,接着的读或写操作将从此位置开始.函数的调用形式如下:fseek(pf,offset,origin)pf:文件指针offset:以字节为单位的位移量,为长整形.origin:是起始点,用来指定位移量是以哪个位置为基准的.1,fseek函数位移量的表示方法标识符数字代表的起始点SEEK_SET 0 文件开始SEEK_END 2 文件末尾SEEK_CUR 1 文件当前位置假设pf已指向一个二进制文件,则;fseek(pf,30L,SEEK_SET)fseek(pf,-10L*sizeof(int),SEEK_END)对于文本文件,位移量必须是0;如:fseek(pf,0L,SEEK_SET)fseek(pf,0L,SEEK_END)2. ftell函数ftell函数用以获得文件当前位置指针的位置,函数给出当前位置指针相对于文件开头的字节数.如;long t;t=ftell(pf);当函数调用出错时,函数返回-1L.我们可以通过以下方式来测试一个文件的长度: fseek(fp,0L,SEEK_END);t=ftell(fp);3.rewind函数调用形式为:rewind(pf);函数没有返回值.函数的功能是使文件的位置指针回到文件的开头.13.10文件应用在磁盘上的test.txt文件中放有10个不小于2的正整数,用函数调用方式编写程序.要求实现:1,在被调函数prime中,判断和统计10个整数中的素数以及个数.2,在主函数中将全部素数追加到磁盘文件test.txt的尾部,同时输出到屏幕上.#include#includeInt prime(int a[],int n){int I,j,k=0,flag=0;for(i=0;i { for(j=2;j if(a[i]%j==0){ flag=0; break;}else flag=1;if(flag){a[k]=a[i];k++;}}return k; }void main(){int n,I,a[10];FILE *fp;fp=fopen("test1-2.txt","r+");for(n=0;n<10;n++)fscanf(fp,"%d",&a[n]);n=prime(a,n);fseek(fp,o,2);for(i=0;i {printf("%3d",a[i]);fprintf(fp,"%3d",a[i]);}fclose(fp);}文件操作函数全clearerr(清除文件流的错误旗标)相关函数feof表头文件#include<stdio.h>定义函数void clearerr(FILE * stream);函数说明clearerr()清除参数stream指定的文件流所使用的错误旗标。

c语言中fgets函数

c语言中fgets函数

c语言中fgets函数摘要:1.fgets 函数的作用和功能2.fgets 函数的语法和参数3.fgets 函数的使用示例4.fgets 函数的注意事项正文:fgets 函数是C 语言中的一个文本处理函数,主要用于从文件或字符串中读取一行文本,并将其保存到指定的缓冲区中。

它是C 语言标准库中的函数,因此可以在任何C 语言程序中使用。

fgets 函数的语法如下:```char *fgets(char *str, int num, FILE *stream);```其中,参数`str`是一个字符指针,用于指向要存储读取内容的缓冲区;参数`num`是一个整数,表示缓冲区的最大长度;参数`stream`是一个FILE 指针,表示要读取的文件或字符串。

fgets 函数的使用示例:```c#include <stdio.h>#include <stdlib.h>int main() {char str[100];FILE *fp;fp = fopen("test.txt", "r");if (fp == NULL) {printf("Error: cannot open file.");exit(1);}fgets(str, 100, fp);printf("%s", str);fclose(fp);return 0;}```在这个示例中,我们首先打开名为"test.txt"的文件,然后使用fgets 函数从文件中读取一行内容,并将其保存到字符数组`str`中。

最后,我们输出`str`中的内容,并关闭文件。

在使用fgets 函数时,需要注意以下几点:1.如果缓冲区长度不足以容纳读取的内容,fgets 函数会返回一个空字符串,并设置errno 为ERANGE。

2.如果文件指针`stream`为NULL,fgets 函数会返回一个空字符串,并设置errno 为EOF。

c语言中的fgets与fputs函数

c语言中的fgets与fputs函数

fgets函数详解fgets函数详解fgets函数从流中读一行或指定个字符,原型是char *fgets(char *s, int n, FILE *stream);从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s 的指针,否则返回NULL。

形参注释:*s结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream文件指针例:如果一个文件的当前位置的文本如下Love ,I HaveBut ........如果用fgets(str1,4,file1);则执行后str1="Lov",读取了4-1=3个字符,而如果用fgets(str1,23,file1);则执行str="Love ,I Have",读取了一行(包括行尾的'\n',并自动加上字符串结束符'\0')。

编辑本段序例:#include <string.h>#include <stdio.h>int main(void){FILE *stream;char string[] = "This is a test";char msg[20];/* open a file for update */stream = fopen("DUMMY.FIL", "w+");/* write a string into the file */fwrite(string, strlen(string), 1, stream);/* seek to the start of the file */fseek(stream, 0, SEEK_SET);/* read a string from the file */fgets(msg, strlen(string)+1, stream);/* display the string */printf("%s", msg);fclose(stream);return 0;}fgets函数用来从文件中读入字符串。

fputs的返回值 -回复

fputs的返回值 -回复

fputs的返回值-回复fputs是一个C语言的库函数,用于将字符串写入到文件流中。

它在操作成功时返回非负值,表示成功写入的字符数;而在出现错误时,返回EOF。

在本文中,我们将一步一步回答关于fputs的返回值的问题,并探讨它的用法和一些常见的应用场景。

首先,我们来了解一下fputs函数的基本用法。

fputs函数的声明如下:cint fputs(const char *str, FILE *stream);它接受两个参数:一个是要写入文件流的字符串str,另一个是文件流指针stream。

字符串会被逐字符写入到文件流中,直到遇到空字符'\0'为止。

而返回值则是成功写入的字符数,或者在出现错误时返回EOF。

那么,为什么返回值是int类型呢?这是因为返回值可以包含两种信息:一是成功写入的字符数,二是错误指示。

成功写入的字符数可以帮助我们判断实际写入是否与期望值相等,而错误指示则可以帮助我们判断是否发生了一些错误,如文件指针无效或者写入权限不足等。

接下来,让我们来看一下成功写入的字符数应该如何使用。

返回的字符数可以帮助我们验证数据是否正确地写入了文件流。

例如,我们可以将返回的字符数与要写入的字符串长度进行比较,以确保所有的字符都被成功写入。

另外,如果我们需要连续写入多个字符串,我们可以使用fputs函数的返回值来计算总共写入的字符数。

在每次调用fputs函数后,我们将返回的字符数累加到一个计数器中,最后可以得到总共写入的字符数。

考虑到fputs可能出现的错误,我们也需要对返回值进行合理的处理。

如果fputs函数返回了EOF,我们就可以根据具体的错误情况来进行处理。

例如,当返回EOF时,可能是由于文件指针无效导致的。

这时,我们可以检查文件指针是否为空,以避免出现无效的写入操作。

另外,在写入权限不足的情况下,返回EOF也是一种常见情况。

这时,我们可以检查文件的写入权限,或者更改文件的权限以便成功写入。

C语言中的输入输出流及其应用

C语言中的输入输出流及其应用

C语言中的输入输出流及其应用C语言是一种广泛应用于软件开发领域的编程语言,其提供了丰富的输入输出(I/O)函数和流(stream)的概念,以帮助开发者实现与用户或环境的交互。

本文将详细介绍C语言中的输入输出流及其应用。

一、输入流输入流用于接收外部数据供程序使用。

C语言提供了丰富的输入函数,包括:1. scanf函数:scanf函数用于从标准输入流(键盘)读取数据,并根据格式化字符串的指定将数据存储到指定的变量中。

例如:```cint age;scanf("%d", &age);```上述代码将从标准输入流读取一个整数,并将其存储到变量age中。

2. fgets函数:fgets函数用于从文件流或标准输入流中读取一行字符串并存储到指定的字符数组中。

例如:```cchar name[100];fgets(name, sizeof(name), stdin);```上述代码将从标准输入流读取一行字符串,并将其存储到字符数组name中。

二、输出流输出流用于向外部输出数据。

C语言提供了多种输出函数,包括:1. printf函数:printf函数用于向标准输出流(屏幕)输出格式化的数据。

例如:```cint num = 10;printf("The number is: %d\n", num);```上述代码将输出"The number is: 10"。

2. fputs函数:fputs函数用于向文件流或标准输出流中输出字符串。

例如:```cchar message[] = "Hello, world!";fputs(message, stdout);```上述代码将字符串"Hello, world!"输出到标准输出流。

三、文件流除了标准输入输出流外,C语言还支持文件流,用于读写文件。

文件流的操作需要使用文件指针,并且需要注意文件的打开和关闭。

c语言fputs函数的用法

c语言fputs函数的用法

c语言fputs函数的用法一、简介fputs函数是c语言中用于将字符串写入文件的函数,其函数原型为:int fputs(const char *s, FILE *stream);其中,s表示需要写入文件的字符串,stream表示需要写入的文件流。

该函数的返回值表示写入文件的字符数,如果写入失败则返回EOF(-1)。

fputs函数可以将字符串写入文件流,但它不会在字符串后加上换行符。

二、函数用法fputs函数主要用于将字符串写入文件,其使用方法如下:```c#include <stdio.h>int main(){FILE *fp;char str[20] = "Hello, World!";fp = fopen("text.txt", "w");fputs(str, fp);fclose(fp);return 0;}```上述代码中,首先定义了一个字符数组str保存需要写入文件的字符串,然后用fopen函数打开文件,第一个参数为文件名,第二个参数是文件打开模式,"w"表示写入模式,如果文件不存在,则会创建文件。

然后使用fputs函数将字符串写入文件,最后用fclose函数关闭文件。

三、注意事项1. 如果stream为NULL,则fputs函数会返回EOF,并将errno设置为EINVAL(无效参数)。

2. 如果写入成功,fputs函数会返回非负值,表示写入的字符数。

例如,如果写入字符串"Hello, World!",则返回的数字为13。

3. 如果文件不存在则会创建文件,但如果文件无法打开则会返回NULL。

4. 如果文件已经存在,且打开方式为写入模式"w",则该文件的内容将被清空。

5. 在使用fputs函数时,需要保证程序有文件操作的权限,否则会导致操作失败。

四、总结fputs函数是一个常用的文件操作函数,它能够将字符串写入文件,但不会在字符串后自动加上换行符。

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语言学习指南课件与历年真题精讲精析 第16章

全国计算机二级c语言学习指南课件与历年真题精讲精析 第16章

4)“wb”为写而打开一个二进制文件。其余功能与 “w”相似,可以从指定位置开始写。 5)“a”为在文件后面添加数据而打开文本文件。这时,
如果指定的文件不存在,系统将用在fopen调用中指
定的文件名建立一个新文件;如果指定的文件已存在, 则文件中原有的内容将保持,新的数据写在原有内容
之后。
6)“ab”为在文件后面添加数据而打开一个二进制文 件。其余功能与“a”相同。
“r+”相同。只是在读和写时,可以由位置函数设置读 和写的起始位置,也就是说不一定从文件的起始位置 开始读和写。
9)“w+”首先建立一个新文件,进行写操作,随后 可以从头开始读。如果指定的文件已存在,则原有的 内容将全部消失。
10)“wb+”功能与“w+”相同,只是在随后的读和
写时,可以由位置函数设置读和写的起始位置。 11)“a+”功能与“a”相同,只是在文件尾部添加新
3、如果在未读满n-1个字符之时,已读到一个换行符或一 个EOF(文件结束标志),则结束本次读操作。
二、fputs函数 1、fputs函数用来把字符串输出到文件中。格式如下: fputs(str,fp);
2、fp是文件指针;str是待输出字符串;可以是字符串常量、
指向字符串的指针或存放字符串的字符数组名等。 3、用此函数进行输出时,字符串中最后的‘\0’并不输出,
16.2 文件指针
定义文件指针类型指针变量的一般形式: FILE *指针变量名;
16.3 打开文件 1、调用C语言提供的库函数fopen“打开”文件: fopen (文件名,文件使用方式);
函数返回一个指向FILE类型的指针。如:
FILE *fp; fp=fopen(“file_a”,”r”);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

fgets函数详解fgets函数详解fgets函数从流中读一行或指定个字符,原型是char *fgets(char *s, int n, FILE *stream);从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s 的指针,否则返回NULL。

形参注释:*s结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream文件指针例:如果一个文件的当前位置的文本如下Love ,I HaveBut ........如果用fgets(str1,4,file1);则执行后str1="Lov",读取了4-1=3个字符,而如果用fgets(str1,23,file1);则执行str="Love ,I Have",读取了一行(包括行尾的'\n',并自动加上字符串结束符'\0')。

编辑本段序例:#include <string.h>int main(void){FILE *stream;char string[] = "This is a test";char msg[20];/* open a file for update */stream = fopen("DUMMY.FIL", "w+");/* write a string into the file */fwrite(string, strlen(string), 1, stream);/* seek to the start of the file */fseek(stream, 0, SEEK_SET);/* read a string from the file */fgets(msg, strlen(string)+1, stream);/* display the string */printf("%s", msg);fclose(stream);return 0;}fgets函数用来从文件中读入字符串。

fgets函数的调用形式如下:fgets(str,n,fp);此处,fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。

函数的功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。

因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。

读入结束后,系统将自动在最后加'\0',并以str作为函数值返回。

编辑本段Linux Cfgets(由文件中读取一字符串,也可以从屏幕上输入一字符串,见范例。

)相关函数open,fread,fscanf,getc表头文件include<stdio.h>定义函数char * fgets(char * s,int size,FILE * stream);s,数据存储位置;size,读取字符串的最大数量;stream,指向FILE结构的指针。

函数说明fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。

返回值fgets()若成功则返回s指针,返回NULL则表示有错误发生。

范例#include<stdio.h>int main(void){char s[80];fputs(fgets(s,80,stdin),stdout);return 0;}执行this is a test /*输入*/this is a test /*输出*/编辑本段phpfgets(PHP 3, PHP 4, PHP 5)fgets -- 从文件指针中读取一行说明string fgets ( int handle [, int length] )从handle 指向的文件中读取一行并返回长度最多为length - 1 字节的字符串。

碰到换行符(包括在返回值中)、EOF 或者已经读取了length - 1 字节后停止(看先碰到那一种情况)。

如果没有指定length,则默认为1K,或者说1024 字节。

出错时返回FALSE。

例子<?php$handle = fopen("/tmp/inputfile.txt", "r");while (!feof($handle)) {$buffer = fgets($fd, 4096);echo $buffer;}fclose($handle);?>fgets()函数中,第一个参数指针需要我们事先分配好大小。

另外,fgets()函数不适合取二进制的文件,这样,容易发生错误。

注:fgets从指定的文件中读一行字符到调用者提供的缓冲区中,gets从标准输入读一行字符到调用者提供的缓冲区中。

#include <stdio.h>char *fgets(char *s, int size, FILE *stream);功能:从文件流读取一行,送到缓冲区,使用时注意以下几点:1.当遇到换行符或者缓冲区已满,fgets就会停止,返回读到的数据,值得注意的是不能用fgets读二进制文件,因为fgets会把二进制文件当成文本文件来处理,这势必会产生乱码。

2.每次调用,fgets都会把缓冲区的最后一个字符设为null,这意味着最后一个字符不能用来存放需要的数据,所以如果有一行,含有LINE_SIZE个字符(包括换行符),要想把这行读入缓冲区,请把参数n设为LINE_SIZE+13. 由结论1可推出:给定参数n,fgets只能读取n-1个字符(包括换行符),如果有一行超过n-1个字符,那么fgets返回一个不完整的行,也就是说,只读取该行的前n-1个字符,但是,缓冲区总是以null字符结尾,对fgets的下一次调用会继续读该行。

fputs向指定的文件写入一个字符串,puts向标准输出写入一个字符串。

#include <stdio.h>int fputs(const char *s, FILE *stream);int puts(const char *s);返回值:成功返回一个非负整数,出错返回EOF缓冲区s中保存的是以'\0'结尾的字符串,fputs将该字符串写入文件stream,但并不写入结尾的'\0'。

与fgets不同的是,fputs并不关心的字符串中的'\n'字符,字符串中可以有'\n'也可以没有'\n'。

puts将字符串s写到标准输出(不包括结尾的'\0'),然后自动写一个' \n'到标准输出。

怎么将文件中的多行字符串读入到一个二维数组中?求助:如何将文件中的多行字符串读入到一个二维数组中????在1.txt这个文件中有这样三行数据:asdf adfe de dde i am------解决方案--------------------fscanf(f1,"%s",a[i])遇到空格就停止了,读取一行要用fgets。

C/C++ code#include <stdio.h>#include <stdlib.h>int main(){FILE *f1,*f2;char a[101][31]={0};int i,j,x,num=0,sum=0;f1=fopen("1.txt","rt");f2=fopen("2.txt","wt");for(i=1;i<101;i++){//fscanf(f1,"%s",a[i]);fgets(a[i], 30, f1);if(feof(f1)==EOF)break;}for(i=0;i<6;i++)printf("%c",a[1][i]);fclose(f1);fclose(f2);getch();}------解决方案--------------------读取一行要用fgets,遇到\n结束用fscanf逐个读单词,遇到制表符、空格或者换行符结束C语言逐行读取文件内容#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_LINE 1024int main(){char buf[MAX_LINE]; /*缓冲区*/FILE *fp; /*文件指针*/int len; /*行字符个数*/if((fp = fopen("test.txt","r")) == NULL){perror("fail to read");exit (1) ;}while(fgets(buf,MAX_LINE,fp) != NULL) {len = strlen(buf);buf[len-1] = '\0'; /*去掉换行符*/printf("%s %d \n",buf,len - 1);}return 0;}。

相关文档
最新文档