c语言将数据写入文件。

只需改变if((fp=fopen("e:\\文件读写中的判断条件。txt "," r ")= = NULL)到if(fp==NULL),因为你已经定义了fp=fopen("e:\\ file读写。txt”,“w”)。文件是通过写打开的,所以不需要再在判断中添加通过读打开的文件,所以不会是空的。

#包含stdio.h

#包含stdlib.h

int main()

{

FILE * fp

Fp=fopen("e:\\文件读写。txt "," w ");

If(fp==NULL) //注意不要写成= = as =,文件的路径为“磁盘:\ \文件夹\ \文件名。格式”。

{

Printf("无法打开"文件读写。txt " \ n ");

出口(1);

}

其他

Printf("文件已成功打开,可以写入数据。\ n ");

fputc('H ',FP);

FP uts(“Hello World”,FP);

fclose(FP);

返回0;

}

如何用c语言将数据写入文件?具体点。谢谢你。 我不知道你在文件里输入了什么数据。输入数据的函数有很多,包括fputc (s,fp)。有fwrite()函数、、、、

以下是您要输入到文件中的字符,并将字符串中的小写字符转换为大写字符:

# includestdio.h

#includestdlib.h

# includectype.h

int main()

{

FILE * fp

字符文件名[20];

Printf("请输入文件名:");

scanf("%s ",文件名);

if((fp=fopen(文件名,“w”))= = NULL)

{

printf("无法打开文件、、、\ n ");

退出(0);

}

Printf("请输入字符直到结尾(Ctrl Z):");

fflush(stdin);

char s;

while(scanf("%c ",s),=EOF)

{

if(islower(s))

s = toupper(s);//将小写字符转换为大写字符

fputc(s,FP);

}

倒带(FP);//就是位置指针返回到文件开头,这个函数没有返回值。

If((fp=fopen(filename," r))= = NULL)//通过读取打开文件。

{

printf("无法打开文件、、、\ n ");

退出(0);

}

while(,feof(fp))

{

s = getc(FP);

putchar(s);

}

返回0;

}

测试:

请输入文件名:hello。

请输入字符直到结尾(ctrl z):hello world,

Z

z .

用C语言实现文件读写操作 用C语言实现文件读写操作

#包含“stdio.h”

主()

{

FILE * fp

char ch,文件名[10];

scanf("%s ",文件名);

if((fp=fopen(文件名,“w”)= = NULL)

{

printf("打不开文件\ n ");

退出(0);

}

ch = getchar();

而(ch!='#')

{

fputc(ch,FP);

putchar(ch);

ch = getchar();

}

fclose(FP);

}

扩展阅读:

基于c的文件操作

在ANSI C中,对文件的操作有两种方式,即流文件操作和I/O文件操作,下面分别介绍。

I .流式文件操作

这种方式的文件操作有一个重要的结构文件,在stdio.h中定义如下:

typedef结构{

int级别;/*缓冲器的填充/清空水平*/

未签名的标志;/*文件状态标志*/

char fd/*文件描述符*/

无符号字符保留;/*如果没有缓冲区,则Ungetc char */

int bsize/*缓冲大小*/

无符号char _ FAR * buffer/*数据传输缓冲器*/

无符号char _ FAR * curp/*当前活动指针*/

未签名的istemp/*临时文件指示器*/

短令牌;/*用于有效性检查*/

}文件;/*这是文件对象*/

文件的结构包含了文件操作的基本属性,所有对文件的操作都要通过这个结构的指针来进行。该文件操作的常用函数见下表。

Fopen()打开流。

Fclose()关闭流。

Fputc()向流中写入一个字符。

Fgetc()从流中读取一个字符。

Fseek()在流中定位指定的字符。

Fputs()将一个字符串写入流中。

Fgets()从流中读取一行或指定字符。

Fprintf()以格式输出到流中。

Fscanf()以格式从流中读取。

当到达文件末尾时,Feof()返回一个true值。

出错时Ferror()返回它的值。

Rewind()将文件定位器重置到文件的开头。

Remove()删除文件。

Fread()从流中读取指定数量的字符。

Fwrite()将指定数量的字符写入流中。

Tmpfile()生成一个临时文件流。

Tmpnam()生成一个唯一的文件名。

以下是其中的一些功能。

1.fopen()

fopen的原型是:file * fopen (constchar * filename,constchar * mode),fopen有三个功能。

打开一个流使用。

将文件连接到此流。

返回一个指向这个流的FILR指针。

参数filename指向要打开的文件名,mode表示打开状态下的字符串,其值如下。

字符串含义

“r”以只读方式打开文件。

“w”以只写模式打开文件。

“a”以追加方式打开文件。

" r "以读/写模式打开文件,如果没有文件错误。

“w”以读/写模式打开文件,如果没有文件,则生成一个新文件。

文件可以以文本模式或二进制模式打开。两者的区别在于,在文本模式下,回车被视为一个字符' ' \n ' ',而在二进制模式下,则被视为两个字符0x0d 0x0D,0x0A如果在一个文件中读取0x1B,文本模式会认为这是文件的结尾,即二进制模型不会对文件进行处理,文本模式会按照一定的方式对数据进行相应的转换。

默认情况下,系统以文本模式打开。可以修改所有变量_fmode的值来修改这个设置,例如_ fmode = O _ TEXT默认打开模式设置为文本模式;And _ fmode = O _ BINARY默认打开模式设置为二进制模式。

我们也可以在模式字符串中指定打开模式,例如“rb”表示以二进制模式打开只读文件,“w t”或“wt”表示以文本模式打开读/写文件。

这个函数返回一个文件指针,所以在声明一个文件指针后不需要初始化,而是使用fopen()返回一个指针并连接到一个特定的文件,成功或失败返回NULL。

示例:

FILE * fp

if(fp=fopen("123.456 "," wb "))

Puts("文件打开成功");

其他

Puts("打开文件的成功或失败");

2.fclose()

fclose()的作用是关闭用fopen()打开的文件,其原型是:int fclose(FILE * FP);如果成功,则返回0,如果失败,则返回EOF。

记得在程序结束时关闭打开的文件,否则可能会造成数据丢失。我过去常常犯这样的错误。

例子:fclose(FP);

3.fputc()

写一个字符到流中,原型是int fputc(int c,FILE * stream);该字符成功返回,失败则返回EOF。

例如:fputc ('x ' ',FP);

4.fgetc()

从流中读取一个字符,原型是int fputc(FILE * stream);该字符成功返回,失败则返回EOF。

例如:char ch1 = fgetc(FP);

5.fseek()

这个函数一般用在以二进制模式打开的文件中,它的作用是定位到流中的指定位置。原型是int fseek (file * stream,long offset,int theywhere);如果成功返回0,则参数offset为移动的字符数,whence为移动的基准,值为。

符号常量值参考位置

SEEK_SET 0文件的开始

SEEK_CUR 1当前读写位置。

SEEK_END 2文件的结尾

例如:fseek(fp,1234L,SEEK _ CUR);//从当前位置向后移动读/写位置1234个字节(L后缀表示长整数)

fseek(fp,0L,2);//将读写位置移动到文件末尾

6.fputs()

将一个字符串写入流中,prototype int fputs (constchar * s,file * stream);

例如:fputs(“我爱你”,FP);

7.fgets()

从流中读取一行或指定一个字符,原型为char * fgets (char * s,int n,file * stream);从流中读取n-1个字符。除非读取一行,否则使用参数S来接收字符串。如果成功,将返回一个指向S的指针,否则返回NULL。

示例:如果文件当前位置的文本如下

爱,我有

但是……..

如果你使用

fgets(str1,4,file 1);

然后str1="Lov "执行后,读取4-1=3个字符,如果使用

fgets(str1,23,file 1);

然后执行str="Love,I Have "读一行(不包括行尾的' ' \n ' ')。

8.fprintf()

按照格式输入到流中,其原型为int fprintf (file * stream,constchar * format [,argument,...]);它的用法和printf()一样,但是不是写到控制台,而是写到流。

例如:fprintf(fp,"-%s ",4,"哈哈哈");

9.fscanf()

根据格式从流中读取,其原型为int fscanf (file * stream,constchar * format [,address,...]);其用法与scanf()相同,但不是从控制台读取,而是从流中读取。

例如:fscanf(fp," %d%d ",x,y);

10.feof()

检测是否到达文件末尾,返回true,否则返回0,原型为int feof(FILE * stream);

示例:if(feof(fp))printf("在文件末尾");

11 .费罗尔()

原型是int ferror(FILE * stream);返回流的最新错误代码,可以通过clearerr()清除。clearerr()的原型是void clearerr(FILE * stream);

例如:printf("%d ",ferror(FP));

12 .倒带()

将当前读写位置返回到文件开头,原型为void rewind(FILE * stream);其实这个函数相当于fseek(fp,0L,SEEK _ SET);

例子:倒带(FP);

移除()

删除文件,原型是int remove(const char * filename);参数是要删除的文件名,成功返回0。

示例:remove(" c:\ \ io . sys ");

13.fread()

从流中读取指定数量的字符,原型为size _ tfraed (void * ptr,size _ t size,size _ t n,file * stream);参数ptr是保存读取的数据,void*的指针可以替换为任意类型的指针,比如char*、int *等。Size是每个块的字节数;n是读取的块数。如果成功,它将返回实际读取的块数(而不是字节数)。该函数通常用于以二进制模式打开的文件。

示例:

char x[4230];

FILE * FILE 1 = fopen(" c:\ \ msdos . sys "," r ");

fread(x,200,12,file 1);//总共读取200*12=2400字节。

14.fwrite()

将指定的数据写入fread对应的流中,原型为size _ t fwrite (constvoid * ptr,size _ t size,size _ t n,file * stream);参数ptr是要写入的数据指针,void*的指针可以用任何类型的指针代替,比如char*、int *等。Size是每个块的字节数;n是要写入的块数。如果成功,它将返回实际写入的块数(而不是字节数)。该函数通常用于以二进制模式打开的文件。

示例:

char x[]=“我爱你”;

fwire(x,6,12,FP);//写6*12=72字节

“我爱”将被写入流fp 12次,共72字节。

15.tmpfile()

它的原型是FILE * tmpfile(void);生成一个临时文件,用“w b”模式打开,返回一个指向这个临时流的指针,如果失败则返回NULL。该文件将在程序结束时自动删除。

例如:FILE * FP = tmpfile();

16 . tmpnam();

它的原型是char * tmpnam(char * s);生成唯一的文件名。其实tmpfile()调用这个函数,参数S用来保存获取的文件名,返回这个指针。如果失败,则返回NULL。

例如:tmpnam(str 1);

第二,直接I/O文件操作

这是C提供的另一种文件操作,通过直接保存/取数文件来完成对文件的处理,而上一篇文章提到的流式文件操作是通过缓冲区进行的;流式文件操作是围绕文件指针进行的,而这样的文件操作是围绕文件的“句柄”进行的。什么是句柄?它是一个整数,也是系统用来标识文件的唯一符号(在WINDOWS中,句柄的概念扩展到所有设备资源的标识)。这种文件操作中常用的函数如下表所示。这些函数和使用的一些符号在io.h和fcntl.h中都有定义,使用时要添加相应的头文件。

功能描述

Open()打开一个文件并返回它的句柄。

Close()关闭一个句柄。

Lseek()定位到文件的指定位置。

Read()块读取文件

Write()块写文件。

eof()测试文件完成了吗?

Filelength()获取文件长度。

Rename()重命名文件。

Chsize()改变文件长度。

这些功能将在下面逐一解释:

1 .打开()

打开一个文件并返回它的句柄。如果失败,它将返回一个小于0的值。原型是into open(const char * path,in access[,unsigned mode])。参数path是要打开的文件名,access是打开模式,mode可选。表示一个文件的属性,主要用在UNIX系统中,这个参数在DOS/WINDOWS中没有意义。文件打开模式如下表所示。

符号意义符号意义符号意义

O_RDONLY只读模式O_WRONLY只写模式O_RDWR读/写模式

O_NDELAY用于UNIX系统O_APPEND追加模式O_CREAT如果文件不存在,将创建它。

O_TRUNC将文件长度切割成0 O_EXCL和O_CREAT,如果文件存在则返回错误O_BINARY二进制。

O_TEXT文本模式

对于多个需求,您可以使用“|”操作符来连接它们。例如,O_APPEND|O_TEXT表示以文本模式和追加模式打开文件。

示例:int handle = open ("c: \ \ msdos.sys ",o _ binary | o _ creat | o _ write)。

2 .关闭()

关闭一个句柄,原型是int close(int handle);如果成功返回0。

示例:关闭(手柄)

3.lseek()

定位到指定位置,原型为:long lseek (int handle,long offset,int from where);参数offset是移动的量,fromwhere是移动的参考位置,取值与前面提到的fseek()相同,SEEK _ SET:file header;SEEK_CUR:文件的当前位置;SEEK_END:文件结束。该函数在执行后返回文件的新访问位置。

示例:

lseek(handle,-1234L,SEEK _ CUR);//将访问位置从当前位置向前移动1234字节。

x=lseek(hnd1,0L,SEEK _ END);//将访问位置移动到文件末尾,其中x=文件末尾的位置,即文件的长度。

4 .阅读()

从文件中读取一个块,原型是int read (int handle,void * buf,unsigned len);参数buf保存读取的数据,len是读取的字节。函数返回实际读取的字节。

例如:char x[200];读(hnd1,x,200);

5.write()

将一段数据写入文件,原型为int write(in handle,void * buf,unsigned len);参数的含义与read()相同,后者返回实际写入的字节数。

例:char x[]=“我爱你”;write(handle,x,strlen(x));

7.eof()

类似于feof(),测试文件是否结束,返回1,否则返回0;原型是:int eof(int handle);

例如:while(!eof(handle 1)){……};

8 .文件长度()

返回文件长度,原型是long filelongth(int handle);相当于lseek(handle,0L,SEEK_END)。

例如:long x = filelongth(handle);

9 .重命名()

重命名文件,原型是int rename (constchar * oldname,const char * newname);参数oldname是旧文件名,newname是新文件名。成功返回0。

示例:rename ("c: \ \ config.sys "," c:\ \ config . w40 ");

10 . chsize();

改变文件长度,原型为int chsize(int handle,long size);参数size表示文件的新长度,成功返回0,否则返回-1。如果指定长度小于文件长度,文件将被截断;如果指定的长度大于文件长度,则将在文件后添加“\0”。

例如:chsize(句柄,0x 12345);

如何用c语言写一个文件fwrite? c语言fwrite写文件可以参考下面的代码:

//定义学生结构

结构学生类型

{

char name[10];

int num

int age

char addr[30];

} stud[40];

int I;

FILE * fp//定义一个文件指针fp

fp = fopen("stu.dat "," WB ");//以二进制可写方式打开stu.dat文件。

//将40个学生的记录写入文件stu.dat

for(I = 0;i40我)

fwrite(stud[i],sizeof(struct Student_type),1,FP);

扩展数据:

fwrite函数的用法

size_t fwrite(const void* buffer,size_t size,size_t count,FILE * stream);

返回值:返回实际写入的数据块数。

1.buffer:它是一个指针,对于fwrite,它是获取数据的地址。

2.size:要写入的单字节数。

3.count:要写入的大小为字节的数据项的数量。

4.流:目标文件指针

5.返回实际写入计数的数据项的数量。

注意:文件写入的位置取决于文件的打开模式。如果是W,就从文件指针指向的地址开始写。替换内容后,文件的长度可以不变,流的位置可以按count移动。如果它是,则从文件的末尾添加,并且文件的长度会增加。

Fseek对这个函数有影响,但是fwrite函数被写入用户空间缓冲区,但是不与文件同步。因此,fflush(FILE *fp)函数可用于修改后的内存与文件同步。

参考来源:百度百科-fwrite

c语言:如何将数据写入文件 原因:

使用fopen时,参数不正确。您使用w参数。如果文件存在,文件的长度将被清除为0,即文件的内容将消失。每次清空写数据的时候,把W改成a就行了.

Fopen功能描述如下所示:

-

FILE * fopen(const char * path,const char * mode);

[编辑本段]功能描述

参数path字符串包含要打开的文件的路径和文件名,参数mode字符串表示流形式。

模式有以下形态字符串:

r打开一个只读文件,该文件必须存在。

r打开一个读写文件,这个文件必须存在。

Rb读写打开一个二进制文件,只能读写数据。

Rt read and write打开一个文本文件,允许读写。

打开只写文件。如果文件存在,文件的长度将被清除为0,即文件的内容将消失。如果文件不存在,则创建该文件。

w打开读写文件。如果文件存在,文件的长度将被清除为零,即文件的内容将消失。如果文件不存在,则创建该文件。

a以另一种方式打开只写文件。如果该文件不存在,将会创建它。如果文件存在,写入的数据将被添加到文件的末尾,即保留文件的原始内容。(保留EOF字符)

用一种额外的方式打开一个读写文件。如果该文件不存在,将会创建它。如果文件存在,写入的数据将被添加到文件的末尾,即保留文件的原始内容。(不保留原始的EOF符号)

Wb只写打开或创建一个新的二进制文件;只允许写入数据。

Wb读写打开或创建一个二进制文件,允许读写。

Wt读写打开或尝试创建文本文件;允许读写。

在读写时打开一个文本文件,允许在文本末尾读取或追加数据。

Ab读写打开一个二进制文件,允许在文件末尾读取或追加数据。

C语言如何将数据写入文件? 使用VC软件,可以通过写代码将数据写入文件。

先打开VC 6.0。

选择文件,新建。

选择C源文件创建一个新的空白文档。

首先声明头文件# includesdio.h。

编写主函数

空总管

主代码

FILE *infile、*outfile、* otherfile

char输入;

字符输入〔10〕;

int I = 0;

infile = fopen("d:\\infile.txt "," r ");//用fopen函数打开文件。

outfile = fopen("d:\\outfile.txt "," a ");//用fopen函数打开文件。

如果(!infile)

printf("打开infile失败....\ n ");

如果(!输出文件)

printf("打开输出文件失败...\ n ");

printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");

printf("**这个程序是为了显示文件操作!* * \ n ");

printf("**输入文件是:* \ n ");

printf(" * * d:\ \ infile . txt * * \ n ");

printf("**该文件中的内容是:* \ n ");

printf(" \ n ");

for(;;)

{

input = fgetc(infile);//无限循环读取文件内容。

printf("%c ",输入);

putc(输入,输出文件);//写内容

我;

if(input == '\n' || input == EOF)

打破;

}

fclose(infile);

fclose(outfile);

scanf("%d ",I)

运行结果

相关文章

发表新评论