Clibrary | 【01】文件操作remove、rename、tmpfile、tmpnam

前言

以下是<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;	
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jxiepc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值