一文带你玩转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语言文件操作的基本内容。通过这些函数和示例代码,你可以轻松地处理各种文件操作任务。