当前位置:实例文章 » 其他实例» [文章]一文带你玩转C语言文件操作

一文带你玩转C语言文件操作

发布人:shili8 发布时间:2025-01-18 06:48 阅读次数:0

**玩转 C语言文件操作**

在计算机编程中,文件操作是非常重要的一部分。C语言提供了丰富的函数来处理文件的读取、写入、创建、删除等操作。在本文中,我们将带你玩转 C语言文件操作,包括基本概念、函数使用和实例代码。

**1. 文件描述符**

在 C语言中,每个打开的文件都有一个唯一的整数值称为文件描述符(file descriptor)。文件描述符是通过 `open()` 函数获得的,可以用来标识一个特定的文件。例如:

c#include <stdio.h>

int main() {
 int fd = open("example.txt", O_RDWR | O_CREAT,0644);
 if (fd == -1) {
 perror("open");
 return1;
 }
 // 使用文件描述符进行操作...
 close(fd); // 关闭文件 return0;
}


**2. 文件读取**

C语言提供了 `read()` 函数来从文件中读取数据。函数原型为:

cssize_t read(int fd, void *buf, size_t count);


其中,`fd` 是文件描述符,`buf` 是缓冲区指针,`count` 是要读取的字节数。

示例代码:

c#include <stdio.h>

int main() {
 int fd = open("example.txt", O_RDONLY,0644);
 if (fd == -1) {
 perror("open");
 return1;
 }
 char buffer[1024];
 ssize_t bytes_read = read(fd, buffer, sizeof(buffer));
 if (bytes_read == -1) {
 perror("read");
 close(fd); // 关闭文件 return1;
 }
 printf("%s
", buffer);
 close(fd); // 关闭文件 return0;
}


**3. 文件写入**

C语言提供了 `write()` 函数来向文件中写入数据。函数原型为:

cssize_t write(int fd, const void *buf, size_t count);


示例代码:

c#include <stdio.h>

int main() {
 int fd = open("example.txt", O_WRONLY | O_CREAT,0644);
 if (fd == -1) {
 perror("open");
 return1;
 }
 char *data = "Hello, World!";
 ssize_t bytes_written = write(fd, data, strlen(data));
 if (bytes_written == -1) {
 perror("write");
 close(fd); // 关闭文件 return1;
 }
 printf("写入成功!
");
 close(fd); // 关闭文件 return0;
}


**4. 文件创建**

C语言提供了 `creat()` 函数来创建一个新文件。函数原型为:

cint creat(const char *pathname, mode_t mode);


示例代码:

c#include <stdio.h>

int main() {
 int fd = creat("example.txt",0644);
 if (fd == -1) {
 perror("creat");
 return1;
 }
 printf("文件创建成功!
");
 close(fd); // 关闭文件 return0;
}


**5. 文件删除**

C语言提供了 `unlink()` 函数来删除一个文件。函数原型为:

cint unlink(const char *pathname);


示例代码:

c#include <stdio.h>

int main() {
 int ret = unlink("example.txt");
 if (ret == -1) {
 perror("unlink");
 return1;
 }
 printf("文件删除成功!
");
 return0;
}


**6. 文件重命名**

C语言提供了 `rename()` 函数来重命名一个文件。函数原型为:

cint rename(const char *oldpath, const char *newpath);


示例代码:

c#include <stdio.h>

int main() {
 int ret = rename("example.txt", "new_example.txt");
 if (ret == -1) {
 perror("rename");
 return1;
 }
 printf("文件重命名成功!
");
 return0;
}


**7. 文件属性**

C语言提供了 `stat()` 函数来获取一个文件的属性。函数原型为:

cint stat(const char *pathname, struct stat *buf);


示例代码:

c#include <stdio.h>
#include <sys/stat.h>

int main() {
 struct stat buf;
 int ret = stat("example.txt", &buf);
 if (ret == -1) {
 perror("stat");
 return1;
 }
 printf("文件大小:%lld
", buf.st_size);
 printf("文件时间:%lld
", buf.st_mtime);
 return0;
}


**8. 文件权限**

C语言提供了 `chmod()` 函数来改变一个文件的权限。函数原型为:

cint chmod(const char *pathname, mode_t mode);


示例代码:

c#include <stdio.h>

int main() {
 int ret = chmod("example.txt",0644);
 if (ret == -1) {
 perror("chmod");
 return1;
 }
 printf("文件权限改变成功!
");
 return0;
}


**9. 文件所有者**

C语言提供了 `chown()` 函数来改变一个文件的所有者。函数原型为:

cint chown(const char *pathname, uid_t owner, gid_t group);


示例代码:

c#include <stdio.h>
#include <sys/types.h>

int main() {
 int ret = chown("example.txt",1000,1000);
 if (ret == -1) {
 perror("chown");
 return1;
 }
 printf("文件所有者改变成功!
");
 return0;
}


**10. 文件组**

C语言提供了 `chgrp()` 函数来改变一个文件的组。函数原型为:

cint chgrp(const char *pathname, gid_t group);


示例代码:

c#include <stdio.h>
#include <sys/types.h>

int main() {
 int ret = chgrp("example.txt",1000);
 if (ret == -1) {
 perror("chgrp");
 return1;
 }
 printf("文件组改变成功!
");
 return0;
}


以上就是 C语言文件操作的基本内容。通过这些函数和示例代码,你可以轻松地处理各种文件操作任务。

相关标签:
其他信息

其他资源

Top