我在下面撰寫了以下代碼,并在 xcode 和 vscode 上運行它而沒有錯誤。但是,我無法獲得任何輸出 filename.txt。它不在我的任何檔案夾中。
感謝是否有人可以提供幫助。
#include <stdio.h>
#include <string.h>
int main() {
FILE *fp=NULL;
fp = fopen("filename.txt","w ");
if (fp!= NULL){
fprintf(fp,"%s %d","Hello",555);
}
fclose(fp);
return 0;
}
uj5u.com熱心網友回復:
運行它沒有錯誤
fclose(NULL)是未定義的行為(UB),因此不清楚檔案打開失敗時是否沒有錯誤。
在打開成功/失敗的兩種情況下列印一些東西 - 和'\n'. 有助于添加錯誤資訊。
健壯的代碼檢查所有 I/O 操作。
#include <stdio.h>
#include <string.h>
int main() {
const char *filename = "filename.txt";
FILE *fp = fopen(filename,"w ");
if (fp == NULL) {
fprintf(stderr, "Unable to open <%s>\n", filename);
perror("fopen()");
} else {
printf("Success opening <%s>\n", filename);
if (fprintf(fp,"%s %d","Hello", 555) < 0) {
fprintf(stderr, "Print failure with <%s>\n", filename);
perror("fprintf()");
}
if (fclose(fp) == EOF) {
fprintf(stderr, "Failed to close <%s>\n", filename);
perror("fclose()");
}
}
return 0;
}
我也嘗試了 perror 方法,它顯示 filename.txt: Permission denied。后來。
檢查 filename.txt 是否為只讀,或正在被其他應用程式(編輯器?)使用,或其他權限限制。
uj5u.com熱心網友回復:
如果檔案沒有成功打開,那么代碼什么也不做(除了關閉一個FILE未定義的空指標)。您應該使用perror()來指示它無法打開的原因:
const char *const filename = "filename.txt";
FILE *const fp = fopen(filename, "w ");
if (!fp) {
perror(filename);
return EXIT_FAILURE;
}
fprintf(fp, "%s %d", "Hello", 555);
您很有可能擁有一個您filename.txt無法寫入的現有檔案,但我們需要錯誤訊息來實際確定它未打開的原因。
或者,您正在與您認為自己所在的位置不同的作業目錄中運行 - 這是您應該調查的內容(可能會生成一些到 stderr 的日志記錄以指示檔案的創建位置)。
uj5u.com熱心網友回復:
我運行了你的代碼,它作業得很好檢查這個影像
但是,你是如何編譯它的,你還記得運行 a.out/execution 嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/532218.html
標籤:C
