2014-10-28 26 views
0

文件擴展我的項目,我從用戶獲取文件名,並將其發送給一個函數來創建實際的文件/打開它,如果它已經存在。我遇到的問題是,當編譯器創建文件時......它實際上就是一個文件。如何通過命令行接收名稱後指定文件類型?指定用C

主營:

printf("Enter the name of the file in which you wish to create\nor if you know the name of an exisiting file, enter that file name:\n"); 
scanf(" %s", FNAME); 
File = FileOpen(FNAME); 

功能:

FILE *FileOpen(char* FNAME) { 
FILE* pFile; 
pFile = fopen(FNAME,"rb+"); 
if (!pFile) 
    pFile = fopen(FNAME,"wb+"); 
return pFile; 
+1

「這實際上就是一個文件。」而不是一個什麼?我不明白這裏的問題。 – ooga 2014-10-28 21:44:19

+0

「type」是什麼意思? – 2014-10-28 21:44:27

+0

根據您提供的語句,可以看出您正在接受來自scanf語句的文件。有問題,你說的文件名是從命令行接受的。完全混淆。 – 2014-10-28 21:46:50

回答

0

這裏是我結束了之後從朋友一些四處/幫助做。

sprintf(FNAME, "%s%s", FNAME, ".dat"); 

感謝所有答覆

0

嘗試:

PFILE =的fopen( 「路徑\ FNAME.extension」, 「RB +」);

在此處輸入與qotes內的延長而該文件的絕對路徑,文件名。如果該文件是在同一directroy

路徑是沒有必要的! ex- FILE * fp; fp = fopen(「file.txt」,「r」);

這裏file.txt的是在同一直供的程序文件。

+0

的#include 的#include INT主要(){ FILE * fp的; fp = fopen(「file.txt」,「w +」); (fp,「%s%s%s%d」,「我們」,「是」,「in」,2014); fclose(fp); return(0); } //此代碼將創建一個名爲file.txt的txt文件並將包含「我們在2014 – 2014-10-29 06:02:25

+0

您的答案與哪個問題相關?它似乎解釋瞭如何打開文件流。回想一下上面的問題,另外 - 請不要在評論中包含代碼,編輯你的答案,並以正確的格式包含代碼,如果你不知道如何格式化答案,其他人會幫忙,我會幫忙的,但請閱讀關於回答問題的幫助 – 2014-10-29 06:02:31

+0

我以爲我問過一個非常簡單的問題,但我猜不是這樣,我想在現實中我所做的只是從用戶那裏獲取一個字符串並在末尾添加一個擴展給定的字符串並將其傳遞給fopen() – Wacko90901 2014-10-29 22:41:14

0

#include <stdio.h> #include <stdlib.h> int main() { FILE * fp;

fp = fopen ("file.txt", "w+");

fprintf(fp, "%s %s %s %d", "We", "are", "in", 2014);

fclose(fp);

return(0); }

//this code will create a txt file named file.txt and will contain "We are in 2014