C语言文件操作

C语言获得的文件,是使用FILE结构体进行定义的。
scanf是fscanf对stdin的特化,printf是fprintf对stdout的特化,perror是fprintf对stderr的特化。

C语言对文件操作有2种方式:
(1)文本文件(也就是字符文件),可使用函数fprintf,fscanf,fgets,fgetc,fputs,fputc
(2)二进制文件(即其数据是数组、结构体等非字符型复杂数据),可使用函数fread,fwrite
文件操作的模式包括:
(1)“r”读模式
(2)“w”写模式
(3)“a”追加模式
(4)“+”读写都可模式
(5)“b”二进制模式

还有其他函数进行文件操作:
(1)feof
int feof(FILE *stream);
其测试给定流 stream 的文件结束标识符。
stream——这是指向 FILE 对象的指针,该 FILE 对象标识了流。
当设置了与流关联的文件结束标识符时,该函数返回一个非零值,否则返回零。

while(1)
{
	c = fgetc(fp);
	if( feof(fp) )
    { 
    	break ;
    }
    printf("%c", c);
}

(2)fseek
int fseek(FILE *stream, long int offset, int whence);
设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的 whence 位置查找的字节数。
stream——这是指向 FILE 对象的指针,该 FILE 对象标识了流。
offset——这是相对 whence 的偏移量,以字节为单位。
whence——这是表示开始添加偏移 offset 的位置。它一般指定为下列常量之一:SEEK_SET,文件的开头;SEEK_CUR,文件指针的当前位置;SEEK_END,文件的末尾。
如果成功,则该函数返回零,否则返回非零值。

FILE *fp;
fp = fopen("file.txt","w+");
fputs("This is runoob.com", fp);
fseek( fp, 7, SEEK_SET );
fputs(" C Programming Langauge", fp);
fclose(fp);
// 最终输出 This is C Programming Langauge

(3)ftell
long int ftell(FILE *stream);
返回给定流 stream 的当前文件位置。
stream——这是指向 FILE 对象的指针,该 FILE 对象标识了流。
该函数返回位置标识符的当前值。如果发生错误,则返回 -1L,全局变量 errno 被设置为一个正值。

len = ftell(fp);
printf("file.txt 的总大小 = %d 字节\n", len);

(4)rewind
void rewind(FILE *stream);
设置文件位置为给定流 stream 的文件的开头。
stream——这是指向 FILE 对象的指针,该 FILE 对象标识了流。

fp = fopen( "file.txt" , "r" );
// 进行文件操作
rewind(fp);
printf("\n");
while(1)
{
	ch = fgetc(fp);
    if( feof(fp) )
    {
    	break ;
    }
    printf("%c", ch); 
}
fclose(fp);

(5)remove
int remove(const char *filename);
删除给定的文件名 filename,以便它不再被访问。
filename——这是 C 字符串,包含了要被删除的文件名称。
如果成功,则返回零。如果错误,则返回 -1,并设置 errno。

int ret;
FILE *fp;
char filename[] = "file.txt";
fp = fopen(filename, "w");
fprintf(fp, "%s", "这里是 runoob.com");
fclose(fp);
   
ret = remove(filename);
if(ret == 0) 
{
	printf("文件删除成功");
}
else 
{
	printf("错误:不能删除该文件");
}

(6)rename
int rename(const char *old_filename, const char *new_filename);
把 old_filename 所指向的文件名改为 new_filename。
old_filename——这是 C 字符串,包含了要被重命名/移动的文件名称。
new_filename——这是 C 字符串,包含了文件的新名称。
如果成功,则返回零。如果错误,则返回 -1,并设置 errno。

int ret;
char oldname[] = "file.txt";
char newname[] = "newfile.txt";
ret = rename(oldname, newname);

if(ret == 0) 
{
	printf("文件重命名成功");
}
else 
{
	printf("错误:不能重命名该文件");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值