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)
运行结果
最后更新于 2023-10-08 19:58:05 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章