C语言实现文件操作--讲学生信息存储到文件中

#include<stdio.h>        
#include<stdlib.h>        
#define N  100        

struct students { // 保持结构体名称一致        
    long int number;        
    char name[10];        
    int score; // 修改为只有一个整型的score,代表一门课程的成绩      
};        
  
int main() { // main 函数的返回类型应为 int        
    struct students stu[N]; // 修改为正确的结构体名称        
    int i, num;        
    FILE *file; // 定义文件指针  

    // 输入学生信息  
    printf("请输入学生人数<%d>:", N);        
    scanf("%d", &num);        
      
    if (num > N) {    
        printf("学生人数不能超过%d\n", N);    
        return 1; // 如果输入的学生人数超过N,则程序返回1表示错误    
    }    
  
    // 打开文件准备写入  
  file open("studebts.txt","w");
  if (file==NULL)
  {
  printf("error\n");
  return 0;}
    } 
  
    printf("请输入学生信息:\n");        
    for (i = 0; i < num; i++) {        
        printf("第%d位学生的学号:", i + 1);        
        scanf("%ld", &stu[i].number);        
        printf("第%d位学生的姓名:", i + 1); // 添加了冒号        
        scanf("%9s", stu[i].name); // 使用%9s防止输入超过数组长度的字符串    
        printf("第%d位学生的课程成绩:", i + 1); // 修改了文字描述        
        scanf("%d", &stu[i].score); // 只输入一个成绩        
          
        // 将学生信息写入文件  
        fprintf(file, "%ld\t%s\t%d\n", stu[i].number, stu[i].name, stu[i].score);  
    }        
  
    // 关闭文件  
    fclose(file);  
  
    // 打开文件准备读取  
    file = fopen("students.txt", "r");  
    if (file == NULL) {  
        printf("无法打开文件\n");  
        return 1;  
    }  
  
    // 输出学生信息  
    printf("\n 学号\t姓名\t课程成绩\n"); // 修改了表头        
    while (fscanf(file, "%ld\t%9s\t%d", &stu[i].number, stu[i].name, &stu[i].score) != EOF) 
	{  
        printf("%ld\t%-10s\t%-8d\n", stu[i].number, stu[i].name, stu[i].score); // 只需要输出一个成绩        
    }  
  
    // 关闭文件  
    fclose(file);  
  
    return 0; // main 函数应该返回一个值,通常返回 0 表示程序正常结束        
}

需要注意的是:

  1. 我定义了一个宏FILE_NAME来指定文件名。
  2. 在写入文件之前,我使用fopen()函数以写入模式("w")打开文件,并检查文件是否成功打开。
  3. 在写入循环中,我使用fprintf()函数将学生信息写入文件。
  4. 在写入完成后,我使用fclose()函数关闭文件。
  5. 然后,我以读取模式("r")重新打开文件,并使用fscanf()函数从文件中读取学生信息,并输出到控制台。
  6. 在读取时,我使用了while循环和fscanf()函数的返回值来检查是否已到达文件末尾(EOF)。
  7. 在读取完成后,我再次使用fclose()函数关闭文件。

请确保程序有权限创建和写入到students.txt文件,并且该文件在执行程序时是可访问的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值