[問題] fopen()用'w'模式, 檔案輸出內容全變空白

看板C_and_CPP作者 (龍眼)時間12年前 (2013/06/18 10:42), 編輯推噓3(304)
留言7則, 3人參與, 最新討論串1/1
各位前輩大家好 最近老師要我們寫程式 利用XOR將輸入路徑的檔案加密 我目前寫到這樣卡住了 我只會新增一個文件然後把加密的東西拷貝上去 如果是要將原檔案覆寫成加密的樣子就寫不出來 可以請前輩們給我一些意見嗎 還有一些小問題我換色放旁邊問 麻煩各位幫忙解惑>''< #include <stdio.h> #include <conio.h> // 載入conio.h標頭檔 / #include <stdlib.h> int main(void) { char key,text,path[100]; printf("請輸入檔案位址"); scanf("%s",&path); printf("請按下您要當金鑰的鍵: "); key=getche(); //按下的即為金鑰 為啥用getchar編譯會直接跳過? printf("\n您輸入的字元是: %c\n",key); FILE *fptr=fopen(path,"r+"); 我試過改成"w"可是寫出來路徑的文件變空白 FILE *fptr2=fopen("output.txt","w"); if (fptr!=NULL) { while((text=getc(fptr))!=EOF) { printf("%c",text); text^=key; //此時經過XOR運算 text中存放的內容已經是亂碼 putc(text,fptr2); 為何不能填fptr,改w只會讓文件變空白 } } else printf("開啟失敗"); fclose(fptr); fclose(fptr2); system("pause"); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.136.209.19

06/18 19:47, , 1F
getchar跳過的原因是scanf留下的換行(因為有按enter鍵)
06/18 19:47, 1F

06/18 19:49, , 2F
scanf("%s\n",&path);這樣試試
06/18 19:49, 2F
會變成輸入完路徑後看不到輸入金鑰 隨便輸入後按enter才出現接下來的東西...

06/18 19:51, , 4F
這裡有講"w" 會做甚麼事 有些東西可以去網路查查
06/18 19:51, 4F
※ 編輯: RonYen 來自: 140.136.209.19 (06/18 19:59)

06/19 07:43, , 5F
path用fgets讀 然後自己把\n去掉..
06/19 07:43, 5F

06/22 00:14, , 6F
用getchar()的話,試著在在scanf後加上 fflush(stdin)
06/22 00:14, 6F

06/22 00:16, , 7F
把暫存區的'\n'清掉~
06/22 00:16, 7F
文章代碼(AID): #1Hm3cgeT (C_and_CPP)