1.fscanf():從檔案指標fp指向的檔案中,按format中對應的控制格式讀取資料,並儲存在agars對應的變數中;
原型: fscanf(FILE *fp, const char *format, agars)
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
char ch;
fp = fopen("test.txt","r");
if(fp == NULL)
{
printf("Open filefailure!");
exit(1);
}
else
{
fscanf(fp,"%s",&ch);
}
printf("%s\n",ch);
fclose(fp);
return 0;
}
註:對於上面else中的內容需注意一下幾點:
1.如果要讀取一個整數(該整數必須在所存變數的資料類型表示的範圍之內)則為:fscanf(fp, “%d”, &ch),而此時ch應該定義為int;若讀取的資料大於int所能表示的範圍,則讀取的資料螢幕顯示為負數,即讀取的資料發生越界,如果此時的ch依然為char型,則運行時報錯(記憶體讀寫錯誤)。
2.如果要讀取字串,則ch應該定義為char型數組或指標(指標需分配空間),而不能將其定義為char型,否則也會報錯(記憶體讀寫錯誤);
3.輸出資料時的資料格式應該和讀取資料時的控制格式相同,除非進行強制轉換。
4.使用fscanf()時,其中的變數agars應該取其地址;
5.對於檔案的操作,記得檔案開啟操作後要關閉。
對於fscanf()主要應用在按行讀取一個檔案中的所有內容或依次讀取每行相隔的幾個資料,具體參照以下樣本:
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
char *ch, *ah;
ch =(char *) malloc(sizeof(char) * 100);
ah =(char *) malloc(sizeof(char) * 100);
fp = fopen("test.txt","r");
if(fp == NULL)
{
printf("Open filefailure!");
exit(1);
}
else
{
while(!feof(fp))
{
fscanf(fp, “%s”, ch);
printf(“%s”, ch);//這兩行為按行讀取所有資料
fscanf(fp, “%s%s”, ch, ah);
printf(“The value of ch and ah is:%s %s\n”,ch,ah);//這兩行為分別讀取每行相隔的幾個資料
}
}
printf("%s\n",ch);
free(ch);
free(ah);
fclose(fp);
return 0;
}
2.fprintf():將agars(參數表)內各項的值,按format(格式控制字元串)所表示的格式,將資料格式為字串的形式寫入到檔案指標fp指向的檔案中。
原型:fprintf(FILE *fp, const char *format, agars)
fprintf()和fscanf()相對應,其用法也基本和fscanf()相同。具體參照以下樣本:
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
fp = fopen("test.txt","a+");
fprintf(fp,“%d %d”,123456,789);//將123456和789寫到test.txt檔案中
fprintf(fp,"%s %s","China","ChongQing"); //將字串China和ChongQing追加寫到test.txt檔案中
fclose(fp);
return 0;
}