作者atx236529 (坐領肝薪)
看板C_and_CPP
標題Re: [問題] 寫入至檔案串流
時間Fri Aug 19 20:30:29 2011
※ 引述《atx236529 (坐領肝薪)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: gcc
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: 問題(Question):
: 不好意思,新手一問...
: 今天卡在一個問題在於printf是將資料顯示(寫入)在命令提字元,而fprintf則是由檔案
: 寫入另一個檔案(?),在下今天想寫一個記帳的程式,就是想說用鍵盤輸入資料後寫入
: 文字檔中,照這樣的邏輯下,我是否要先寫入一個文字檔再複製過去?但這樣根本是多此
: 一舉吧??是我哪邊的觀念錯了,還望大哥們指點一下fprintf printf fscanf scanf的用法
: 差異,因為以前都是在命令題字元執行,現在接觸到輸入輸出就亂了套了...
: 餵入的資料(Input):
: 預期的正確結果(Expected Output):
: 錯誤結果(Wrong Output):
: 程式碼(Code):(請善用置底文網頁, 記得排版)
: 補充說明(Supplement):
以下是小弟程式碼(寫到一半)
FILE *fp1;
int main()
{
int breakfast,lunch,dinner,others,sum;
char filename[50],str[100];
printf("請輸入來源檔名:");
scanf("%s",filename);
fp1=fopen(filename,"a+");
if(fp1 == NULL){
printf("error");
exit(1);
}
printf("讀取並寫入中...\n");
printf("日期:\n");
while((fgets(str,100,stdin))!='0a'){
fputs(str,fp1);
}
printf("breakfast:\n");
fclose(fp1);
return 0;
}
可是就如前面所說的會卡在如何在我按下ENTER或鍵盤輸入什麼才能停止寫入並跳出?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.161.91.50
→ meconin:你可以不要用while啊, 不然就是在裡面判斷 strcmp/strncmp 08/19 20:42
→ firejox:0a... 08/19 20:55
→ firejox:while(!strcmp(fgets(str,100,stdin),"0a"))... 08/19 20:58
→ firejox:前面說用Ctrl+z/Ctrl+d則是 while(fgets(str,100,stdin)) 08/19 21:00