前言
以下是
<cstdio>
中对文件操作的函数。
1、remove
int remove ( const char * filename );
/*
* @func:删除在filename中指定名称的文件,操作中不涉及任何流;
* @param filename:C字符串,包含要删除的文件的名称;
* return:成功返回 0;失败返回一个非零值;
*/
案例:
/*----------------------------------------------------------------------
> File Name: stdioDemo.cpp
> Author: Jxiepc
> Mail: Jxiepc
> Created Time: Mon 20 Sep 2021 04:20:08 PM CST
----------------------------------------------------------------------*/
#include<iostream>
#include<unistd.h>
#include<cstring>
#include<cstdio>
void myRemove(){
if(remove("test.txt") != 0)
perror("Error remove...");
else
std::cout << "sucessful..." << std::endl;
}
2、rename
int rename ( const char * oldname, const char * newname );
/*
* @func:将oldname指定的文件或目录的名称更改为newname,操作中不涉及流;
* - 若oldname和newname指定不同的路径,则将文件移动到新的位置;
* - 若newname存在,该函数可能会失败或覆盖现有文件,这取决于特定的系统和库实现。
* @param oldname:C 字符串,要更改文件的 名称/路径;
* @param newname :新的文件名;
* return:成功返回 0;失败返回一个非零值;
*/
案例:
/*----------------------------------------------------------------------
> File Name: stdioDemo.cpp
> Author: Jxiepc
> Mail: Jxiepc
> Created Time: Mon 20 Sep 2021 04:20:08 PM CST
----------------------------------------------------------------------*/
#include<iostream>
#include<unistd.h>
#include<cstring>
#include<cstdio>
void myRename(){
char *oldname = "old.txt";
char *newname = "new.txt";
if(rename(oldname, newname) != 0)
perror("Error rename");
else
std::cout << "successful..." << std::endl;
}
3、tmpfile
FILE * tmpfile ( void );
/*
* @func:打开临时文件
* - 创建一个临时二进制文件;
* - 当流关闭fclose或程序正常终止时,创建的临时文件会自动删除。
* - 如果程序异常终止,是否删除文件取决于具体的系统和库的实现。;
*
* return:指向创建的临时文件的流指针;失败时,返回NULL;
*/
案例:
/*----------------------------------------------------------------------
> File Name: stdioDemo.cpp
> Author: Jxiepc
> Mail: Jxiepc
> Created Time: Mon 20 Sep 2021 04:20:08 PM CST
----------------------------------------------------------------------*/
#include<iostream>
#include<unistd.h>
#include<cstring>
#include<cstdio>
void myTmpfile(){
char buffer [256];
FILE * pFile;
pFile = tmpfile ();
do {
if (!fgets(buffer,256,stdin)) break;
fputs (buffer,pFile);
} while (strlen(buffer)>1);
rewind(pFile);
while (!feof(pFile)) {
if (fgets (buffer,256,pFile) == NULL) break;
fputs (buffer,stdout);
}
fclose (pFile);
}
4、tmpnam
char * tmpnam ( char * str );
/*
* @func:生成临时文件名
* - 使用fopen作为临时文件创建常规文件,一旦文件关闭,程序将调用remove来删除该文件;
* - 返回一个字符串,该字符串包不与现有任何文件同名,适合于安全地创建临时文件,而不会有覆盖现有文件的风险;
* - 若str是空指针,则生成的字符串存储在一个内部静态数组中,可以通过返回值访问该数组;
*@param str :指向字符数组的指针,建议的临时名称以C字符串的形式存储在该数组中。 这个数组大小至少L_tmpnam字符。
或者,可以指定一个空指针,使用一个内部静态数组来存储建议的临时名称,该临时名称的指针由函数返回。
* return:若str为NULL,则 this 指向一个内部缓冲区(其内容至少保留到下一次调用此函数之前),若str不为NULL,则返回str;
*/
案例:
/*----------------------------------------------------------------------
> File Name: stdioDemo.cpp
> Author: Jxiepc
> Mail: Jxiepc
> Created Time: Mon 20 Sep 2021 04:20:08 PM CST
----------------------------------------------------------------------*/
#include<iostream>
#include<unistd.h>
#include<cstring>
#include<cstdio>
void myTmpnam(){
char buf[L_tmpnam];
char *p;
tmpnam(buf);
std::cout << "传入std:"<< buf <<std::endl;
p = tmpnam(NULL);
std::cout << "传入NULL:" << p <<std::endl;
}