程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C文件操作之寫入統計信息到文件頭

C文件操作之寫入統計信息到文件頭

編輯:關於C

有一個小需求,文本文件存儲的10幾個字段,包括用戶信息,產品信息,和價格信息,每個字段用符號'|'隔開,比如9962519126|20120524143922|Umai:PROG/[email protected]|城中大盜[英]|null|80|0|5|90002|0|2012052414412604|1|0|0
要求第一行是記錄數|費用總和
實現方式為:當組合完所要寫入文件的信息後,先把記錄數加1,費用相加,寫入第一行,然後把游標定位在文件當前末尾,再寫入信息內容。以此進行循環!
簡單代碼為:
#include "stdafx.h"
#include<stdio.h>
#include<string>

int main(int argc, char* argv[])
{
  
    char Inf[3][20] = {0};
    char strs[3][10];
    int i=0;
    int iFeeSum = 0;
    int iCount = 0;
    int index = 0;
    char lz_Recond[20] = {0};
    char temp[20] = {0};
   
    //用戶名稱|產品名稱|費用
    strcpy(Inf[0],"you|90002|100\n");
    strcpy(Inf[1],"me|90003|100\n");
    strcpy(Inf[2],"she|90004|100\n");
 
    printf("inf=%s\n",Inf[0]);
    FILE* fp= fopen("Record.txt","w" );
    if  ( fp == NULL )
    {
            printf("Can not open MdnFile :%s\n" );
            exit( -1 );
    }
   
    printf("inf=%s\n",Inf[i]);
   while(i < 3)
   {  
  
           strcpy(temp, Inf[i]);
            char *p   = strtok(temp,   "|"); //分離出需要的字段
            while(p != NULL)  
            {
                    strcpy(strs[index],p); 
                     p  = strtok(NULL,   "|");
                     index++;
             }
          
             iFeeSum = iFeeSum+atoi(strs[2]);
            iCount = iCount + 1;
            index = 0;
  
            sprintf(lz_Recond,"%d|%d\n",iFeeSum,iCount);
            printf("lz_Recond=%s\n",lz_Recond);
            rewind(fp);   //游標定位在文件頭
            fputs(lz_Recond, fp);
            fseek(fp,0,SEEK_END); //游標定位在文件當前位置
            printf("inf=%s\n",Inf[i]);
            fputs(Inf[i],fp);
             i++;
     }
    fclose(fp);
  
     return 0;
}

 


摘自 cancan8538的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved