English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

以下是ㄧ個程式 不過我不太知道他是幹麻的
執行結果我不太懂 可以解釋一下嗎 謝謝各位了!!~
還有這幾行if((cfPtr = fopen("clients.dat","w")) == NULL)
while(!feof(stdin)){ 我完全看不懂 可以詳細解釋嗎 麻煩各位了

#include
int main()
{
int account;
char name[30];
double balance;
FILE *cfPtr;
if((cfPtr = fopen("clients.dat","w")) == NULL)
{
printf("file could not be opened");
}
else{
printf("enter the accout, name,and balance.\n");
printf("enter EOF end input.\n");
printf("?");
scanf("%d%s%1f",&account,name,&balance);
while(!feof(stdin)){
fprintf(cfPtr,"%d %s %.2f\n",account,name,balance);
printf("?");
scanf("%d%s%1f",&account,name,&balance);
}
fclose(cfPtr);
}
return 0;
}

2007-01-05 18:26:19 · 1 個解答 · 發問者 funny 2 in 電腦與網際網路 程式設計

clients.dat是指說寫入的資料會存成這個檔嗎??
還有NAME的那邊為什麼不用加&就可以讀入了
while(!feof(stdin))<--也算是個固定用法嗎
謝謝了~~

2007-01-05 19:54:37 · update #1

1 個解答


這個原始碼用的是最常使用的函式,你可以去查C語言的書籍。
#include
int main()
{
int account;
char name[30];
double balance;
FILE *cfPtr; //檔案指標
if((cfPtr = fopen("clients.dat","w")) == NULL)
//開檔函式, NULL 表開檔失敗, w 表寫入模式
{
printf("file could not be opened");
}
else{
printf("enter the accout, name,and balance.n");
printf("enter EOF end input.n");
printf("?");
scanf("%d%s%1f",&account,name,&balance);
while(!feof(stdin)){ //檔案資料未讀取完成
fprintf(cfPtr,"%d %s %.2fn",account,name,balance);
//從檔案擷取格式化字串
printf("?");
scanf("%d%s%1f",&account,name,&balance);
//輸入資料
}
fclose(cfPtr); //關閉檔案
}
return 0;
}


2007-01-06 18:15:49 補充:
fopen("clients.dat","w")
當它為寫入模式時,它會建立一個新檔案。
如果檔案已存在,檔案內容就會被完全清除。

scanf 把使用者輸入的資料,放置系統指定的變數位址。
NAME 是一個陣列,陣列名稱本身就是陣列的起始位址。

在 while 之前有使用者輸入資料的動作。
所以 while(!feof(stdin)) 指的是使用者輸入的資料未完成,就開始進入迴圈。
如果只是單純檢查是否讀完檔案,寫法為
while( ! feof ( cfPtr ) )

2007-01-05 19:22:58 · answer #1 · answered by Big_John-tw 7 · 0 0

fedest.com, questions and answers