导航:首页 > 文件教程 > fopen写入文件

fopen写入文件

发布时间:2021-11-01 00:08:41

① php fopen 写入txt失败

//原型
$f
=
fopen('路径',
'a+');
fwrite($f,
'内容');
fclose($f);
//可能的原因
1写入的值是空的
2创建文件夹时,没有赋予可写权限
mkdir($path,
0777);
由于看不到代码,所以具体的,你自己检查一下呢

② PHP,如果想要在文件末尾写入方式打开一个文件,该给fopen()传什么参数

$file = fopen("path","a+");
读写方式打开,并指向打开文件的末尾

③ 关于利用fopen函数创建文件的问题

函数原型:FILE * fopen(const char * path,const char * mode);

相关函数:open,fclose,fopen_s,_wfopen

返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。

参数说明:

参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。

mode有下列几种形态字符串:

r 以只读方式打开文件,该文件必须存在。

r+ 以可读写方式打开文件,该文件必须存在。

rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。

w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)

a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)

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

wb+ 读写打开或建立一个二进制文件,允许读和写。

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

wx 创建文本文件,只允许写入数据.[C11]

wbx 创建一个二进制文件,只允许写入数据.[C11]

w+x 创建一个文本文件,允许读写.[C11]

wb+x 创建一个二进制文件,允许读写.[C11]

w+bx 和"wb+x"相同[C11]

例子:

#include<stdio.h>

#defineF_PATH"d:\myfile\file.dat"
intmain(void)
{
FILE*fp=NULL;//需要注意
fp=fopen(F_PATH,"r");
if(NULL==fp)
{
return-1;//要返回错误代码
}
fclose(fp);
fp=NULL;//需要指向空,否则会指向原打开文件地址

return0;
}

④ 在C语言中,fopen一个文件 如何能够在写入新的数据覆盖原文件中指定长度的内容

程序示例

程序示例1#include#include //为了使用exit()int main(){char ch;FILE* fp;char fname[50]; //用于存放文件名printf("输入文件名:");scanf("%s",fname);fp=fopen(fname,"r"); //只供读取if(fp==NULL) //如果失败了{printf("错误!");exit(1); //中止程序}//getc()用于在打开文件中获取一个字符while((ch=getc(fp))!=EOF)putchar(ch);fclose(fp); //关闭文件return 0;}注意!初学者往往会犯一个错误,即在输入文件名时不加后缀名,请注意加上!程序示例2[2]#includeFILE *stream, *stream2;int main( void ){int numclosed;// Open for read (will fail if file "crt_fopen.c" does not exist)if( (stream = fopen( "crt_fopen.c", "r" )) == NULL ) // C4996// Note: fopenis deprecated; consider usingfopen_sinsteadprintf( "The file 'crt_fopen.c' was notopened " );elseprintf( "The file 'crt_fopen.c' wasopened " );// Open for writeif( (stream2 = fopen( "data2", "w+" )) == NULL ) // C4996printf( "The file 'data2' was not opened " );elseprintf( "The file 'data2' was opened " );// Close stream if it is not NULLif( stream){if (fclose( stream ) ){printf( "The file 'crt_fopen.c' was not closed " );}}// All other files are closed:numclosed = _fcloseall( );printf( "Number of files closed by _fcloseall: %u ", numclosed );}[3]


⑤ c语言 fopen 无法打开文件写入

首先确保你 “c:\tc\”这个路径是存在的
如果存在,那么把这一行的'\'都换成"\\"

⑥ 【急】fopen()用“rb”“wb”方式读写文件与“r”“w”有什么不同

b是二进制文件的意思。rb打开读二进制文件,wb打开写二进制文件。
r 与w是打开普通文件。

⑦ 请教:fopen 能写文件吗如何写。

两种都可以,不过你最好只使用一种输入输出。如只使用stdio或fstream,
fopen对应写入函数,fwrite(),
fstream对于write成员函数。
FILE *out = fopen("abc.rgb", "wb");
int a;
fwrite(&a, sizeof(int), 1, out);


ofstream out("abc.rgb", ios_base::binary);

out.write(&a, sizeof(int));

⑧ php用fopen,fwrite,fclose等函数将数据写入文本文件后,如何储存该数据

fopen打开文件资源的时候,mode参数选择w,w+或a,a+,如果文件不存在,就会自动创建文件

一般情况建议直接使专用属file_put_contents,会自动打开文件资源,写入数据并关闭资源,如果文件不存在会自动创建文件,操作也会简便很多

详细信息请参看文档
http://php.net/manual/zh/function.fopen.php
http://php.net/manual/zh/function.file-put-contents.php

⑨ 用 fopen函数写入txt文件怎么写在头部

直接写入是不可能的,不过你可以先用r打开,读取出内容,关闭文件然后把读取的内容与B时行合并,当然是B+a,B在前然后再用w打开,把这个内容写入,把原来的内容覆盖

⑩ _函数不需要使用fopen()函数打开文件就可以对文件进行写入操作。

一、C文件操作:
C语言中,文件的操作都是通过一个FILE类型的文件指针进行,也就是说只有通过文件指针,才能调用相应的文件。FILE是一个由系统定义的结构体(定义在stdio.h中),可以存放文件的相关信息。
文件的打开(fopen函数)
文件的操作过程一般为:打开 => 读/写 => 关闭。
fopen函数的原型如下:
FILE* fopen(const char* filename, const char* mode);
函数调用就比较简单了:
FILE* fp;
fp = fopen("file1.txt", "r");
如果打开成功,返回file1.txt文件的指针,如果打开失败,返回一个NULL指针,所以调用fopen()后我们需要检查fp的值才进行下一步操作。fopen()的第一个参数为文件名,第二个参数为文件打开方式,含义如下表:
说明: 1. 使用"r"时,如果文件不存在,则出错。
2. 使用"w"时,如果没有文件,则创建一个新文件。
3. 使用"a"时,如果希望向文件尾添加数据,则该文件必须存在,否则出错。
4. "r+","w+","a+"都是可以输入和输出数据,但必须遵守上述3点
5. 操作二进制文件时,加上"b"字符,且二进制文件对换行符不会进行转换,而文本文件会将换行符转换为回车和换行两个字符。
文件的关闭(fclose函数)
在使用完一个文件后,若不关闭则会造成系统资源泄漏。使用fclose()关闭文件即可,原型为 int fclose(FILE* fp)。使用:fclose(fp); flose()返回0时为顺利关闭文件,否则返回EOF(-1)。
文件的读写
1) fputc(), fgetc()分别为从文件流中写和读一个字符,原型分别如下:
写:int fputc(int c, FILE* fp); 读:int fgetc(FILE* fp); 失败时均返回EOF
2) fputs(), fgets()分别为从文件流中写和读一个字符串,原型分别如下:
写:int fputs(const char* str, FILE* fp); 例如: fputs("I love this game!", fp);
读:char* fgets(char* str, int n, FILE* fp); 从流中读取n-1个字符或读完一行,参数str用于接收读取的字符串。注意当读取一行时,不包括行尾的'\n'字符。
3) fseek() 一般用于二进制模式打开的文件中,功能是定位到流中指定的位置。原型如下:
int fseek(FILE* fp, lont offset, int whence); 参数offset是移动的字符数,whence是移动的基准,取值是:
SEEK_SET 0 //文件开头
SEEK_CUR 1 //当前读写的位置
SEEK_END 2 //文件尾部
4) fprintf(),fscanf()是将数据按格式输出输入到文件流中,用法类似printf()和scanf()。原型分别如下:
int fprintf(FILE* fp, const char* format, ...); 它与printf()不同的就是将数据写到了文件流中,而不是控制台罢了。
int fscanf(FILE* fp, cosnt char* format, ...); 从文件流中按格式读取,与scanf()不同的就是数据是从文件流中读取而已。
例如: fprintf(fp, "count=%d", 5); fscanf(fp, "%d", &x);
5) feof()是检测是否已到文件尾,是返回真,否则返回0,原型是 int feof(FILE* fp);
6) rewind() 则是把当前的读写位置回到文件开始,相当于 fseek(fp, 0L, SEEK_SET); 原型: void rewind(FILE* fp);
7) remove() 删除文件,原型: int remove(const char* filename); 参数为要删除的文件名,成功则返回0;
8) fread(), fwrite() 它们相当于可将一块的数据读出或写入,相当的方便。原型如下:
size_t fread(void* ptr, size_t size, size_t n, FILE* fp); 从流中读指定个数的字符,size是每块的字节娄,n则是读取的块数。
size_t fwrite(const void* ptr, size_t size, size_t n, FILE* fp); 类似的是向文件流中写入n块size字节数的数据。可以看到数据指针为void*型,即可以使用任何类型的指针来替换。例如:
现在一个结构体: struct student_t{char name[16]; int id; int age;}; 创建三个学生的数据并赋值:struct student_t stu[3];
这时,当我们找开文件后(一般是进制模式),可以调用fwrite()将三个学生的数据都写入到文件中,两种方式:
for(int i = 0; i < 3; ++i)
fwrite(&stu[i], sizeof(struct student_t), 1, fp);
或者:fwrite(stu, sizeof(struct student_t), 3, fp);
些时,我们调用fread()函数便可很轻松的将刚才写入的3个学生的数据读取出来:
struct student_t stus[3];
for(int i = 0; i < 3; ++i)
fread(&stus[i], sizeof(struct student_t), 1, fp);
或者:fread(stus, sizeof(struct student_t), 3, fp); 这样便可将三个学生的数据读入到stus变量中了(有木有很方便呐)
注意:如果你发现使用fread()读取之后,最后一个学生读取的数据不完全,可能是由于你没有使用二进制模式打开的原因。
9) 最后是tmpfile()和tmpnam(),前者为生成一个临时文件,后者为生成一个唯一的文件名,具体使用在此不介绍了。
二、使用C++中的fstream文件流操作类进行文件的读写
使用fstream操作文件与使用C库函数类似,只不过fstream为面向对象方式,或多了上些C++的特性。首先,这里大概有三个流:
fstream为文件输入输出流,ifstream为输入文件流,ofstream为输出文件流,它们与ostream不同的就流的目的地为文件,而不是控制台。这里只介绍与上述的一些不同点:
1. 打开文件,如可以是 ifstream input_file("file2.txt"); 这样将会以默认方式打开file2.txt文件并进行读取。也可使用open()方式打开一个文件,并指定打开方式,例如:
ifstream input_file;
input_file.open("file2.txt", ios::binary);
打开后,可以使用is_open()检测是否打开成功:
if(input_file.is_open()){},然后可以使用流操作符向文件写数据了,例如:
input_file << "this is a test line";
input_file << "another info";
另外,这里的文件打开方式在ios空间下:
ios::app 添加到文件尾
ios::ate 把文件标志放在末尾而非起始。
ios::trunc 默认. 截断并覆写文件。
ios::nocreate 文件不存在也不创建。
ios::noreplace 文件存在则失败。
ofstream使用方式类似,读取一行数据可以使用getline(buf, count), 类型于fgets()。fstream类还提供一个很多其它方法,如fclose()为关闭文件,eof()用于检测状态是否已经到了文件末尾。
这里还有两个类似于上述的fread()和fwrite()函数,是read(), write(),功能和用法类似类似,例如:
output_file.write((const char*)stu, 3 * sizeof(struct student_t));
input_file.read((char*)stus, 3 * sizeof(struct student_t));
注意,这里也需要使用二进制模式打开,否则read的时候最后的上些数据读不完全。调用上面两个函数后可以使用bad()来检测文件流对象是否错误,例如,if(input_file.bad()){printf("error when read file\n"); return;},最后input_file.close()即可。
最后,C/C++文件的操作并不复杂,多使用几次便可熟练掌握,需要注意的就是文件的打开方式,和当用同一个文件指针进行又读又写时,注意文件指针位置的移动。

阅读全文

与fopen写入文件相关的资料

热点内容
win10计算器打开快捷键 浏览:751
网站移植类app有哪些 浏览:315
我的南京app为什么注册电子账户 浏览:559
什么英语app比较好用 浏览:241
基于单片机的密码锁 浏览:242
java英文技术文档 浏览:590
视频文件左下角有个x 浏览:25
大数据中什么是键 浏览:302
八门神器邮箱怎么使用教程 浏览:765
网站日历提醒怎么老是删不了苹果 浏览:946
苹果手机xim文件 浏览:783
access数据库查询最大值 浏览:280
linuxdvd挂载文件系统 浏览:384
安卓3d立方体模型旋转 浏览:691
linux回复原先的文件 浏览:678
js静态文件 浏览:846
javaredis存储对象 浏览:906
如何下载php文件 浏览:946
视频怎么变成mp3格式文件怎么打开 浏览:869
pe下找桌面文件win10 浏览:686

友情链接