FILE *fp; while(!feof(fp)) { fscanf(fp,"%s%d%lf",a,&b,&c);//這里%s對應的a不需要加上取地址符號&,因為a為數組名稱,其本身就表示該數組的首地址
printf("%s%d%lf",a,b,c) }
fscanf能正確操作的txt文件編碼方式為ANSI,以下編碼方式均不能使函數正常執行:UTF-8,Unicode,Unicode big endian
這里假如說txt文本內的內容為(對應上面三個數據來寫):
張三 18 1.74
。。。
這里數據與數據之間需要以制表符/或者空格分開即可,數據之間就像scanf()函數一樣,若以逗號分隔數據,則scanf中也需要加入逗號,例如scanf("%d,%d",a,b);再輸入數據時就要輸入1,5才能正確輸入
但這里嘗試fscanf()函數之后並未能出現同樣的效果,以后解決了再更新
上菜展示一下效果:
#include <stdio.h> #include <stdlib.h> int main() { int num; char name[20]; double height; FILE *fp; fp = fopen("d:\\1.txt", "r+");//“r+” 以可讀寫方式打開文件,該文件必須存在,d:\\1.txt表示d盤根目錄下的1.txt文件 if (fp == NULL) { printf("Cannot open the file!\n"); exit(0); } printf("學號\t姓名\t身高\n"); while (!feof(fp)) { fscanf(fp, "%d%s%lf", &num, name, &height); printf("%d\t%s\t%g", num, name, height); } printf("\n"); fclose(fp);//要記得關閉文件 return 0; }