crysky7ye 发表于 2019-1-23 14:10

C语言文件的读写实例

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <Windows.h>
/* 读出文件放到数组中,新增数据插入到该数组中;
   重新将数组中的数据写入该文件中
*/
void main(int argc,char * agrv)
{
    FILE *fp;
    char name;       //输入变量
    int sum;             //输入变量
    char fName;//可存储10个人名
    int fScore;      //存储10个分数记录
    char buff1;
    char buff2;
    int i=0;
    //打开存储文件
    if ((fp=fopen("c:\\scorelist.txt","r"))==NULL)
    {
      printf("Can not open the file");
      getch();
      exit(0);
    }
    else
    {   
      while (!feof(fp))
      {   
            ZeroMemory(buff1,sizeof(buff1));       //清空内存
            ZeroMemory(buff2,sizeof(buff1));
            fgets(buff1,sizeof(buff1),fp);         //读取名称
            fgets(buff2,sizeof(buff2),fp);         //读取第二行分数
            if (strcmp(buff1,"")==0)
            {
                continue;
            }
            else
            {
                strcpy(fName,buff1);
                printf("%s",fName);               //输出名称
                fScore = atoi(buff2);                //将字符型转换成int型
                printf("%i\n",fScore);            //打印输出分数值
            }
            i++;
      }
    }
    fclose(fp);
    //打开存储文件,将排好序的数据重新写入文件中
    if ((fp=fopen("c:\\scorelist.txt","w"))==NULL)
    {
      printf("Can not open the file");
      getch();
      exit(0);
    }
    else
    {   
      printf("Input the new name:\n");
      scanf("%s",name);
      printf("Input the new score:\n");
      scanf("%i",&sum);
      int j =0;
      //获取新增积分排序位置
      while(sum < fScore)
      {
             j++;
         
      }
      //移动数据重新对数组排序,从后往前排序
      int m = i;
      while (i>j)
      {
            strcpy(fName,fName);
            fScore = fScore;
            i--;
      }
      strcpy(fName,name);
      strcat(fName,"\n");
      fScore = sum;
      //写入文本文件
      int k=0;
      while(k<=m)
      {
            fputs(fName,fp);
            fprintf(fp,"%i\n",fScore);
            k++;
      }
    }   
    fclose(fp);
}

痴情总被无情伤 发表于 2019-1-24 14:00

不错,前排留名
页: [1]
查看完整版本: C语言文件的读写实例