電腦等級考試二級C語言程式設計專項訓練題——文件操作

来源:https://www.cnblogs.com/cs-whut/archive/2022/11/14/16887882.html
-Advertisement-
Play Games

ArrayList 概述 ArrayList 是一種變長的集合類,底層是基於數組來實現的,所以 ArrayList 查詢效率高、增刪效率低 ArrayList 集合中的元素是有序、可重覆的,且可以存儲 null 空值 當每次向 ArrayList 容器中添加元素時,會進行容量檢查:當往 ArrayL ...


一.基礎知識

在C語言中,文件操作有四個步驟:

① 定義文件指針;

② 打開文件:文件指針指向磁碟文件緩衝區;

③ 文件處理:文件讀寫操作;

④ 關閉文件。

文件打開函數如下:

fp=fopen("文件名","文件打開方式")

其功能是:使文件指針fp與相應文件實體對應起來,程式對文件指針進行操作,即fp代表磁碟文件。

        函數fopen()若執行成功,則返回包含文件緩衝區等信息的FILE型地址,賦給文件指針fp;若不成功,則返回一個NULL(空值)。

文件關閉函數如下:

fclose(文件指針)

        其功能是:把緩衝區中的數據寫入磁碟扇區,確保寫文件的正常完成;釋放文件緩衝區單元和FILE結構體,使文件指針與具體文件脫鉤。

        若正常關閉文件,函數fclose()的返回值為0;若無法正常關閉文件,返回非0。

文件讀寫函數包括

字元讀寫函數: fgetc() / fputc()

字元串讀寫函數:fputs() / fgets()

格式化讀寫函數:fscanf() / fprintf()

二進位讀寫函數:fread ()/ fwrite()

其他相關函數:

檢測文件結尾函數feof()

文件定位的函數fseek() 、rewind()

各函數的調用格式示例如下:

ch = fgetc( fp ) ;

從fp所指示的磁碟文件上讀入一個字元到ch

fputc(ch, fp);

把一個字元 ch 寫到 fp 所指示的磁碟文件上

fgets(s, n, fp);

        從文本文件中讀取字元串。其中,s可以是字元數組名或字元指針;n指定讀入的字元個數;fp代表文件指針。

        函數被調用時,最多讀取n-1個字元,並將讀入的字元串存入s所指向記憶體地址開始的n-1個連續的記憶體單元中。

        當函數讀取的字元達到指定的個數,或接收到換行符,或接收到文件結束標誌EOF時,將在讀取的字元後面自動添加一個’\0’字元;若有換行符,則將換行符保留(換行符在’\0’字元之前);若有EOF,則不保留。

        fputs(s, fp);

向指定的文本文件寫入一個字元串s,字元串s中的結束符’\0’不寫入文件。

fscanf(文件指針,格式字元串,輸入表);

fprintf(文件指針,格式字元串,輸出表);

指定格式的輸入輸出函數。

fread(buffer, size, count, fp);

從二進位文件中讀入一個數據塊到變數

fwrite(buffer, size, count, fp);

向二進位文件中寫入一個數據塊     

其中,四個參數說明如下:

buffer:指針,表示存放數據的首地址;

size:數據塊的位元組數;

count:要讀寫的數據塊塊數;

fp:文件指針。

feof(fp) ;

判斷fp指針是否已經到文件末尾,若到文件結束位置,函數返回值1;若文件未結束,函數返回值0。

rewind(fp);

定位文件指針,使文件指針指向讀寫文件的首地址,即打開文件時文件指針所指向的位置。

fseek(fp, offset, from);

        其中,offset為移動偏移量,long型;from表示起始位置,文件首部、當前位置和文件尾部分別對應0,1,2,或常量SEEK_SET、SEEK_CUR、SEEK_END。

        例如:fseek(fp, 20L, 0):將文件位置指針移動到離文件首20位元組處;fseek(fp, -20L, SEEK_END):將文件位置指針移動到離文件尾部前20位元組處。 

二.程式填空題練習題

1.給定程式中,函數fun的功能是:將指定源文件中的內容複製到指定的目標文件中,複製成功時函數返回值為1,失敗時返回值為0。

請在下劃線處填入正確的內容並將下劃線刪除,使程式得出正確的結果。

註意:不得增行或刪行,也不得更改程式的結構!

#include  <stdio.h>

#include  <stdlib.h>

int fun(char *source, char *target)

    FILE  *fs,*ft;     

    char  ch;

    /**********found**********/

    if((fs=fopen(source, ___1___))==NULL)

      return 0;

    if((ft=fopen(target, "w"))==NULL)

      return 0;

    printf("\nThe data in file :\n");

    ch=fgetc(fs);

    /**********found**********/

    while(!feof(___2___))

    { 

        putchar( ch );

    /**********found**********/

        fputc(ch,___3___);

        ch=fgetc(fs);

    }

    fclose(fs); 

    fclose(ft);

    printf("\n\n");

    return  1;

}

int main()

    char  sfname[20] ="myfile1",tfname[20]="myfile2";

    FILE  *myf;     

    int  i;     

    char  c;

    myf=fopen(sfname,"w");

    printf("\nThe original data :\n");

    for(i=1; i<30; i++)

    {

        c='A'+rand()%25;

        fprintf(myf,"%c",c);

        printf("%c",c);

    }

    fclose(myf);

    printf("\n\n");

    if (fun(sfname, tfname))  printf("Succeed!");

    else  printf("Fail!");

    return 0;

2.給定程式中,函數fun的功能是:將參數給定的字元串、整數、浮點數寫到文本文件中,再用字元方式從此文本文件中讀入,並調用庫函數atoi和atof將字元串轉換成相應的整數、浮點數,然後將其顯示在屏幕上。

請在下劃線處填入正確的內容並將下劃線刪除,使程式得出正確的結果。

註意:不得增行或刪行,也不得更改程式的結構!

#include  <stdio.h>

#include  <stdlib.h>

void fun(char *s, int a, double f)

{

    /**********found**********/

    __1__ fp;

    char  str[100], str1[100], str2[100];

    int  a1;    

    double  f1;

    fp = fopen("file1.txt", "w");

    fprintf(fp, "%s  %d  %f\n", s, a, f);

    /**********found**********/

    __2__ ;

    fp = fopen("file1.txt", "r");

    /**********found**********/

    fscanf(__3__,"%s%s%s", str, str1, str2);

    fclose(fp);

    a1 = atoi(str1);

    f1 = atof(str2);

    printf("\nThe result :\n%s %d %f\n",str,a1,f1);

}

int main()

{

    char  a[10]="Hello!";   

    int  b=12345;

    double  c= 98.76;

    fun(a,b,c);

    return 0;

3.給定程式中,函數fun的功能是:將形參給定的字元串、整數、浮點數寫到文本文件中,再用字元方式從此文本文件中逐個讀入並顯示在屏幕上。

請在下劃線處填入正確的內容並將下劃線刪除,使程式得出正確的結果。

註意:不得增行或刪行,也不得更改程式的結構!

#include  <stdio.h>

void fun(char *s, int a, double f)

{

    /**********found**********/

    __1__ fp;

    char  ch;

    fp = fopen("file1.txt", "w");

    fprintf(fp, "%s %d %f\n", s, a, f);

    fclose(fp);

    fp = fopen("file1.txt", "r");

    printf("\nThe result :\n\n");

    ch = fgetc(fp);

    /**********found**********/

    while (!feof(__2__))

    {

    /**********found**********/

       putchar(__3__); ch = fgetc(fp); 

    }

    putchar('\n');

    fclose(fp);

}

int main()

{

    char  a[10]="Hello!";   

    int  b=12345;

    double  c= 98.76;

    fun(a,b,c);

    return 0;

4.給定程式中,函數fun的功能是:將自然數1~10以及它們的平方根保存到名為myfile3.txt的文本文件中,然後再順序讀出顯示在屏幕上。

請在下劃線處填入正確的內容並將下劃線刪除,使程式得出正確的結果。

註意:不得增行或刪行,也不得更改程式的結構!

#include    <stdio.h>

#include    <math.h>

int fun(char  *fname )

    FILE  *fp;     

    int  i,n;     

    float  x;

    if((fp=fopen(fname,"w"))==NULL) return 0;

    for(i=1;i<=10;i++)

    /**********found**********/

      fprintf(___1___,"%d %f\n",i,sqrt((double)i));

    printf("\nSucceed!!\n");

    /**********found**********/

    ___2___;

    printf("\nThe data in file :\n");

    /**********found**********/

    if((fp=fopen(___3___,"r"))==NULL)

      return  0;

   fscanf(fp,"%d%f",&n,&x);

   while(!feof(fp))

   { 

       printf("%d %f\n",n,x);  

       fscanf(fp,"%d%f",&n,&x); 

    }

   fclose(fp);

   return  1;

}

int main()

    char  fname[]="myfile3.txt";

    fun(fname);

    return 0;

5.給定程式的功能是:從鍵盤輸入若幹行文本(每行不超過80個字元),寫到文件myfile4.txt中,用-1(獨立一行)作為字元串輸入結束的標誌。然後將文件的內容讀出顯示在屏幕上。

請在下劃線處填入正確的內容並將下劃線刪除,使程式得出正確的結果。

註意:不得增行或刪行,也不得更改程式的結構!

#include  <stdio.h>

#include  <string.h>

#include  <stdlib.h>

void WriteText(FILE *);

void ReadText(FILE *);

int main()

    FILE  *fp;

    if((fp=fopen("myfile4.txt","w"))==NULL)

    {  printf(" open fail!!\n"); exit(0);  }

    WriteText(fp);

    fclose(fp);

    if((fp=fopen("myfile4.txt","r"))==NULL)

    {  printf(" open fail!!\n"); exit(0);  }

    ReadText(fp);

    fclose(fp);

}

/**********found**********/

void WriteText(FILE  ___1___)

    char  str[81];

    printf("\nEnter string with -1 to end :\n");

    gets(str);

    while(strcmp(str,"-1")!=0)

    {

    /**********found**********/

      fputs(___2___,fw);  fputs("\n",fw);

      gets(str);

    }

}

void ReadText(FILE  *fr)

    char  str[81];

    printf("\nRead file and output to screen :\n");

    fgets(str,81,fr);

    while( !feof(fr) )

    {

    /**********found**********/

      printf("%s",___3___);

      fgets(str,81,fr);

    }

6.給定程式的功能是調用函數fun建立班級通訊錄。通訊錄中記錄每位學生的編號、姓名和電話號碼。班級的人數和學生的信息從鍵盤讀入,每個人的信息作為一個數據塊寫到名為myfile5.dat的二進位文件中。

請在下劃線處填入正確的內容並將下劃線刪除,使程式得出正確的結果。

註意:不得增行或刪行,也不得更改程式的結構!

#include  <stdio.h>

#include  <stdlib.h>

#define  N 5

typedef  struct

   int  num;

   char  name[10];

   char  tel[10];

}STYPE;

void check();

/**********found**********/

int fun(___1___ *std)

{

   /**********found**********/

   ___2___  *fp;    

   int  i;

   if((fp=fopen("myfile5.dat","wb"))==NULL)

      return (0);

   printf("\nOutput data to file !\n");

   for(i=0; i<N; i++)

   /**********found**********/

      fwrite(&std[i], sizeof(STYPE), 1, _3_);

   fclose(fp);

   return (1);

}

int main()

   STYPE s[10]={{1,"aaa","1111"},{1,"bbb","2222"},

        {1,"ccc","3333"}, {1,"ddd","4444"},

        {1,"eee","5555"}};

   int  k;

   k=fun(s);

   if (k==1)

   {  printf("Succeed!");  check(); }

   else

      printf("Fail!");

   return 0;

}

void check()

   FILE  *fp;    

   int  i;

   STYPE  s[10];

   if((fp=fopen("myfile5.dat","rb"))==NULL)

   { printf("Fail !!\n"); exit(0); }

   printf("\nRead file and output to screen :\n");

   printf("\n   num    name      tel\n");

   for(i=0; i<N; i++)

   { 

      fread(&s[i],sizeof(STYPE),1, fp);

      printf("%6d %s %s\n",s[i].num,s[i].name,s[i].tel);

   }

   fclose(fp);

7.給定程式中,通過定義學生結構體變數,存儲了學生的學號、姓名和3門課的成績。所有學生數據均以二進位方式輸出到文件中。函數fun的功能是:重寫形參filename所指文件中最後一個學生的數據,即用新的學生數據覆蓋該學生原來的數據,其他學生的數據不變。

請在下劃線處填入正確的內容並將下劃線刪除,使程式得出正確的結果。

註意:不得增行或刪行,也不得更改程式的結構!

#include  <stdio.h>

#define  N  5

typedef struct  student

{

    long  sno;

    char  name[10];

    float  score[3];

} STU;

void fun(char  *filename, STU  n)

{

    FILE  *fp;

    /**********found**********/

    fp = fopen(__1__, "rb+");

    /**********found**********/

    fseek(fp, -1L*sizeof(STU), __2__);

    /**********found**********/

    fwrite(__3__, sizeof(STU), 1, fp);

    fclose(fp);

}

int main()

{

    STU  t[N]={ {10001,"MaChao", 91, 92, 77},

              {10002,"CaoKai", 75, 60, 88},

              {10003,"LiSi", 85, 70, 78},   

              {10004,"FangFang", 90, 82, 87},

              {10005,"ZhangSan", 95, 80, 88}};

    STU  n={10006,"ZhaoSi", 55, 70, 68}, ss[N];

    int  i,j;     

    FILE  *fp;

    fp = fopen("student.dat", "wb");

    fwrite(t, sizeof(STU), N, fp);

    fclose(fp);

    fp = fopen("student.dat", "rb");

    fread(ss, sizeof(STU), N, fp);

    fclose(fp);

    printf("\nThe original data :\n\n");

    for (j=0; j<N; j++)

    { 

      printf("\nNo:%ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);

      for (i=0; i<3; i++)  printf("%6.2f ", ss[j].score[i]);

      printf("\n");

    }

    fun("student.dat", n);

    printf("\nThe data after modifing :\n\n");

    fp = fopen("student.dat", "rb");

    fread(ss, sizeof(STU), N, fp);

    fclose(fp);

    for (j=0; j<N; j++)

    { 

      printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);

      for (i=0; i<3; i++)  printf("%6.2f ", ss[j].score[i]);

      printf("\n");

    }

    return 0;

8.給定程式中,通過定義學生結構體變數,存儲了學生的學號、姓名和3門課的成績。所有學生數據均以二進位方式輸出到文件中。函數fun的功能是:從形參filename所指的文件中讀入學生數據,並按照學號從小到大排序後,再用二進位方式把排序後的學生數據輸出到filename所指的文件中,覆蓋原來的文件內容。

請在下劃線處填入正確的內容並將下劃線刪除,使程式得出正確的結果。

註意:不得增行或刪行,也不得更改程式的結構!

#include <stdio.h>

#define  N  5

typedef struct student

{

    long  sno;

    char  name[10];

    float  score[3];

} STU;

void fun(char  *filename)

{

    FILE  *fp;     

    int  i, j;

    STU  s[N], t;

    /**********found**********/

    fp = fopen(filename, __1__);

    fread(s, sizeof(STU), N, fp);

    fclose(fp);

    for (i=0; i<N-1; i++)

      for (j=i+1; j<N; j++)

    /**********found**********/

         if (s[i].sno __2__s[j].sno)

         {  t=s[i];  s[i]=s[j];  s[j]=t; }

    fp = fopen(filename, "wb");

    /**********found**********/

    __3__(s, sizeof(STU), N, fp);

    fclose(fp);

}

int main()

{

    STU  t[N]={ {10005,"ZhangSan", 95, 80, 88},

             {10003,"LiSi", 85, 70, 78},

             {10002,"CaoKai", 75, 60, 88},

             {10004,"FangFang", 90, 82, 87},

             {10001,"MaChao", 91, 92, 77}}, ss[N];

    int  i,j;     

    FILE  *fp;

    fp = fopen("student.dat", "wb");

    fwrite(t, sizeof(STU), 5, fp);

    fclose(fp);

    printf("\n\nThe original data :\n\n");

    for (j=0; j<N; j++)

    { 

        printf("\nNo: %ld  Name: %-8s      Scores:  ",t[j].sno, t[j].name);

        for (i=0; i<3; i++) 

            printf("%6.2f ", t[j].score[i]);

        printf("\n");

    }

    fun("student.dat");

    printf("\n\nThe data after sorting :\n\n");

    fp = fopen("student.dat", "rb");

    fread(ss, sizeof(STU), 5, fp);

    fclose(fp);

    for (j=0; j<N; j++)

    { 

        printf("\nNo: %ld  Name: %-8s      Scores:  ",ss[j].sno, ss[j].name);

        for (i=0; i<3; i++) 

            printf("%6.2f ", ss[j].score[i]);

        printf("\n");

    }

    return 0;

9.給定程式中,通過定義學生結構體變數,存儲了學生的學號、姓名和3門課的成績。所有學生數據均以二進位方式輸出到student.dat文件中。函數fun的功能是:從指定文件中找出指定學號的學生數據,讀入此學生數據,對該生的分數進行修改,使每門課的分數加3分,修改後重寫文件中該學生的數據,即用該學生的新數據覆蓋該學生原來的數據,其他學生的數據不變;若找不到,則什麼都不做。

請在下劃線處填入正確的內容並將下劃線刪除,使程式得出正確的結果。

註意:不得增行或刪行,也不得更改程式的結構!

#include  <stdio.h>

#define    N  5

typedef struct  student

{

    long  sno;

    char  name[10];

    float  score[3];

} STU;

void fun(char *filename, long  sno)

{

    FILE  *fp;

    STU  n;     

    int  i;

    fp = fopen(filename,"rb+");

    /**********found**********/

    while (!__1__)

    { 

        fread(&n, sizeof(STU), 1, fp);

    /**********found**********/

        if (n.sno__2__)  break;

    }

    if (!feof(fp))

    { 

        for (i=0; i<3; i++)  n.score[i] += 3;

    /**********found**********/

        fseek(fp, -1L*__3__, SEEK_CUR);

        fwrite(&n, sizeof(STU), 1, fp);

    }

    fclose(fp);

}

int main()

{

    STU  t[N]={{10001,"MaChao", 91, 92, 77},

               {10002,"CaoKai", 75, 60, 88},

               {10003,"LiSi", 85, 70, 78}, 

               {10004,"FangFang", 90, 82, 87},

               {10005,"ZhangSan", 95, 80, 88}}, ss[N];

    int  i,j;     

    FILE  *fp;

    fp = fopen("student.dat", "wb");

    fwrite(t, sizeof(STU), N, fp);

    fclose(fp);

    printf("\nThe original data :\n");

    fp = fopen("student.dat", "rb");

    fread(ss, sizeof(STU), N, fp);

    fclose(fp);

    for (j=0; j<N; j++)

    { 

        printf("\nNo: %ld  Name: %-8s      Scores:  ",ss[j].sno, ss[j].name);

        for (i=0; i<3; i++)

            printf("%6.2f ", ss[j].score[i]);

        printf("\n");

    }

    fun("student.dat", 10003);

    fp = fopen("student.dat", "rb");

    fread(ss, sizeof(STU), N, fp);

    fclose(fp);

    printf("\nThe data after modifing :\n");

    for (j=0; j<N; j++)

    { 

        printf("\nNo: %ld  Name: %-8s      Scores:  ",ss[j].sno, ss[j].name);

        for (i=0; i<3; i++) 

            printf("%6.2f ", ss[j].score[i]);

        printf("\n");

    }

    return 0;

}

1.(1"r"2)fs        (3)ft
2.(1)FILE *    (2)fclose(fp)    (3)fp
3.(1)FILE *    (2)fp       (3)ch
4.(1)fp    (2)fclose(fp)    (3)fname
5.(1)*fw    (2)str    (3)str
6.(1)STYPE    (2)FILE    (3)fp
7.(1)filename    (2)SEEK_END    (3)&n
8.(1"rb"2)>    (3)fwrite
9.(1)feof(fp)    (2)==sno     (3sizeof(STU)
程式填空題練習題參考答案
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • carbon copy cloner 6 for Mac是一款支持數據同步和備份的磁碟克隆備份工具,Carbon Copy Cloner軟體設計的初衷就是智能到讓人忘記它的存在。界面簡單、易於配置,但後臺各種強大,甚至可設定插上某個移動硬碟時自動開始備份。支持自動備份到另一個目錄、備份到移動硬碟、備 ...
  • ASF掛卡部署,非搬運且親測有效。 一、如何下載ASF 1.下載ASF對應版本 首先你需要確定自己的系統環境,這裡我採用的是centos7.6,即linux64位系統作為演示。第一步進入github查看最新的ASF版本,鏈接如下:https://github.com/JustArchiNET/Arc ...
  • 無屏幕、無網線、根目錄wpa_supplicant失效,甚至沒電腦也可以實現。 以前跑樹莓派一直是用的ubuntu和raspbian,突然想試試centos。因為我沒有單獨的顯示屏,往常格式化寫鏡像之後,都是根目錄寫入ssh和wpa_supplicant,開機自動聯網獲得樹莓派ip就能ssh命令行登 ...
  • 背景 隨著移動設備的普及,越來越多的業務具備了時空屬性,例如快遞,試試跟蹤包裹、快遞員位置。例如實體,具備了空間屬性。 例如餐飲配送,送貨員位置屬性。例如車輛,實時位置。等等。 其中兩大需求包括: 1、對象位置實時跟蹤,例如實時查詢某個位點附近、或某個多邊形區域內的送貨員。 2、對象位置軌跡記錄和分 ...
  • 7.1 資料庫設計概述: 資料庫設計一般定義:資料庫設計是指對於一個給定的應用環境,構造(設計)優化的資料庫邏輯模式和物理結構,並據此建立資料庫及其應用系統,使之能夠有效地存儲和管理數據,滿足各種用戶的應用需求,包括信息管理要求和數據操作要求 定的應用環境:一個資料庫不可能什麼數據都接收,如在學校或 ...
  • PostgreSQL , 電子圍欄 , 共用自行車 , 共用充電寶 , 共用xxx , 菜鳥 , 航空管制 , 無人飛行器 , pipelinedb , 流式計算 ...
  • 解構賦值 通過解構賦值,可以快速從對象或者數組中取出屬性或者數值。 解構賦值 可以通過定位到數組或者對象的某一個位置,將值直接賦給一個或多個變數。 const arr = ['dasha', 'ersha', 'gangdan'] let [a, b, c] = arr //a='dasha' b= ...
  • 俗話說,人靠衣裝,馬靠鞍。官網首頁是產品或公司的臉面,必須要大氣。 原來舊版的支付寶首頁,有個大視頻作為頁面背景一直播放展示,效果很贊,所以實現了下 先看看效果: 亮點部分 大視頻是絕對定位,定在最下麵,上面的文字是絕對定位,定在最上面。還加了一層半透明的div藍色調。 文案的居中是使用的 disp ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...