linux 利用Read函数,Write函数 , lseek函数,dup函数,Close 函数,Open函数,利用标准IO实现学生管理系统;的代码一个学生一个文件;文件名称为学号.data
时间: 2024-10-13 07:11:40 浏览: 37
Linux lseek函数的使用详解
5星 · 资源好评率100%
在Linux环境下,使用标准I/O库(如stdio.h)和相关的系统调用实现一个简单的学生管理系统,每个学生对应一个单独的文件,文件名由学号加".data"组成。这里提供一个基本的伪代码示例,展示了如何操作:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 50
#define FILENAME_FORMAT "%d.data"
// 定义学生结构体
typedef struct {
char name[MAX_NAME_LEN];
int id;
} Student;
void create_file(int id) {
char filename[PATH_MAX];
snprintf(filename, sizeof(filename), FILENAME_FORMAT, id);
FILE *file = fopen(filename, "w");
if (file == NULL) {
perror("Failed to open file");
exit(EXIT_FAILURE);
}
fclose(file);
}
void write_student(int id, const char *name) {
char filename[PATH_MAX];
snprintf(filename, sizeof(filename), FILENAME_FORMAT, id);
FILE *file = fopen(filename, "a");
if (file == NULL) {
perror("Failed to open file for writing");
exit(EXIT_FAILURE);
}
fprintf(file, "Student ID: %d\nName: %s\n", id, name);
fclose(file);
}
Student read_student(int id) {
char filename[PATH_MAX];
snprintf(filename, sizeof(filename), FILENAME_FORMAT, id);
FILE *file = fopen(filename, "r");
if (file == NULL) {
printf("No student found with ID: %d\n", id);
return {NULL, 0};
}
// 读取学生信息并初始化结构体
rewind(file); // 移动到文件开头
fscanf(file, "Student ID: %d\nName: %s", &id, name);
fclose(file);
return {name, id};
}
int main() {
Student new_student = {"张三", 1001};
create_file(new_student.id);
write_student(new_student.id, new_student.name);
Student existing_student = read_student(1001);
if (existing_student.id > 0) {
printf("Found student: %s\n", existing_student.name);
} else {
printf("No student found with ID: %d\n", existing_student.id);
}
return 0;
}
```
这个例子创建了一个新的文件、写入学生信息,并从文件中读取信息。需要注意的是,实际应用中可能会需要处理异常情况,例如检查文件打开失败等。
阅读全文