① C語言中如何將一個變數作為文件名的一部分(該文件帶有後綴)
相當於把i放到文件名的字元串中毀悔中吧
不知文件名你用的什麼類型
Cstring之前春類都有format函纖山數
② c語言中,fopen(「文件名」,「打開方式」)中的文件名可以是變數嗎謝謝
可以
從文件中讀取一個數
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
int a;
char str[100];//儲存文件名的數組
FILE *fp;
printf("請輸入文件名:");
gets(str);
if (NULL == (fp = fopen(str, "r")))//注意這的表達形式
{
printf("文件打開失敗!\n");
exit(0);
}
while (fscanf(fp, "%d", &a) != EOF);
printf("%d\n", a);
}
③ c語言中,fopen(「文件名」,「打開方式」)中的文件名可以是變數嗎
文件名可以直接寫進去,也可以放在變數里:
FILE *fp;
char namein[]="abc.txt";
fp=fopen(namein,"r");
或 fp=fopen("abc.txt","r");
文件名若帶路徑,單反斜杠要寫成雙反斜杠,例如:
char namein[]="C:\\path\\abc.txt";
長路徑可用8字母格式縮寫:
C:\Documents and Settings\Wang\...縮寫:
char namein[]="C:\\Docume~1\\Wang\\abc.txt";
二進制文件打開方式用rb:
fp=fopen("abc.txt","rb"); 或:
fp=fopen(namein,"rb");
④ 如何用c語言重命名
可以通過C庫函數rename實現。
頭文件:stdio.h
原型::int rename(char *oldname, char *newname);
功能: 給一個文件重命名,從原始的oldname改成新名字newname。如果oldname和newname帶有路徑,且所在文件夾不同,那麼用該函數可以實現文件移動功能。刪除成功返回0,否則返回-1。
使用rename需要注意:
一、重命名文件:
如果newname指定的文件存在,則會被覆蓋。
如果newname與oldname不在一個目錄下,則相當於移動文件。
二、重命名目錄:
如果oldname和oldname都為目錄,則重命名目錄。
如果newname指定的目錄存在且為空目錄,則先將newname刪除。
對於newname和oldname兩個目錄,調用進程必須有寫許可權。
重命名目錄時,newname不能包含oldname作為其路徑前綴。例如,不能將/usr更名為/usr/foo/testdir,因為老名字( /usr/foo)是新名字的路徑前綴,因而不能將其刪除。
⑤ c語言文件起名可以是一個變數加常量嗎如當名字是變數,作業為常量、文件名為小明作業。
使用sprintf生成相應文件名的字元串橡兆
再使畝如仔用該字元串作為文件名即可
比如n為"hello",m為123
可以sprintf(file,"%s%d.txt",n,m);
此時file為"hello123.txt",這樣使用file這個變迅汪量作為文件名即可
⑥ C語言中,如何用根據不同的變數來更改文件名
使用sprintf函數來生成一個字元串,然後用這個字元串來作為文件名。
例如:
char buffer[256]; /*用來存儲文件名的字元串*/
/*生成文件名,並寫入到buffer里。*/
sprintf( buffer,
"Solubility Sb(%.2f)Pb(%.2f)Ag(%.2f)H(%.2f).txt",
Sb_t, Pb_t, Ag_t, H );
⑦ c語言fopen函數如何用一個變數來作為文件名
用char數組
實例:
#include<stdio.h>
int main(void)
{
char F_PATH[]="d:\\myfile\\file.dat";
FILE*fp=NULL;//需要注意
fp=fopen(F_PATH,"r");
if(NULL==fp)
{
return -1;//要返回錯誤代碼
}
fclose(fp);
fp=NULL;//需要指向空,否則會指向原打開文件地址
return 0;
}
⑧ C語言文件讀寫中能用變數名作為文本名嗎
1.fopen() fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen實現三個功能:為使用而打開一個流,把一個文件和此流相連接,給此流返回一個FILR指針。 參數filename指向要打開的文件名,mode表示打開狀態的字元串,其取值如下: 字元串 含義 "r" 以只讀方式打開文件 "w" 以只寫方式打開文件 "a" 以追加方式打開文件 "r+" 以讀/寫方式打開文件,如無文件出錯 "w+" 以讀/寫方式打開文件,如無文件生成新文件 一個文件可以以文本模式或二進制模式打開,這兩種的區別是:陸耐在文本模式中回車被當成一個字元』\n』,而二進制模式認為它是兩個字元 0x0D,0x0A;如果在文件中讀到0x1B,文本模式會認為這是文件結束符,也就是二進制模型不會對文件進行處理,而文本方式會按一定的方式對數據作相應的轉換。 系統默認的是以文本模式打開,可以修改全部變數_fmode的值來修改這個設置,例如_fmode=O_TEXT;就設置默認打開方式為文本模式;而_fmode=O_BINARY;則設置默認打開方式是二進制模式。 我們也可以在模式字元串中指定打開的模式,如"rb"表示以二進制模式打開只讀文件,"w+t"或"wt+"表示以文本凱悉擾模式打開讀/寫文件。 此函數返回一個FILE指針,所以申明一個FILE指針後不用初始化,而是用fopen()來返回一個指針並與一個特定的文件相連,如果成敗,返回NULL. 例: 以下是引用片段:FILE *fp; if(fp=fopen("123.456","wb")) puts("打開文件成功"); else puts("打開文件成敗");2.fclose() fclose()的功能就是關閉用fopen()打開的文件,其原型是:int fclose(FILE *fp);如果成功,返回0,失敗返回EOF。 在程序結束時一定要記得關閉打開的文件,不然可能會造成數據丟失的情況,我以前就經常犯這樣的錯誤。 例:fclose(fp);3.fputc() 向流寫一個字元,原型是int fputc(int c, FILE *stream); 成功返回這個字元,失敗返回EOF。 例:fputc(』X』,fp);4.fgetc() 從流中讀一個字元,原型是int fputc(FILE *stream); 成功返回這個字元,失敗返回EOF。 例:char ch1=fgetc(fp);5. fseek() 此函數一般用於二進制模式打開的文件中,功能是定位到流中指定的位置,原型是int fseek(FILE *stream, long offset, int whence);如果成功返回0,參數offset是移動的字元數,whence是移動的基準,取值是: 符號常量 值 基準位置 SEEK_SET 0 文件開頭 SEEK_CUR 1 當前讀寫的位置 SEEK_END 2 文件尾部 例:fseek(fp,1234L,SEEK_CUR);//把讀寫位置從當前位置向後移動1234位元組(L後綴表示長整數) fseek(fp,0L,2);//把讀寫位置移動到文件尾6.fputs() 寫一個字元串到流中,原型int fputs(const char *s, FILE *stream); 例:fputs("I Love You",fp);7.fgets() 從流中讀一行或指定個字元,原型是char *fgets(char *s, int n, FILE *stream); 從流中讀取n-1個字元,除非讀完一行,參盯旦數s是來接收字元串,如果成功則返回s的指針,否則返回NULL。 例:如果一個文件的當前位置的文本如下: Love ,I Have But …….. 如果用 fgets(str1,4,file1); 則執行後str1="Lov",讀取了4-1=3個字元,而如果用 fgets(str1,23,file1); 則執行str="Love ,I Have",讀取了一行(包括行尾的』\n』)。8.fprintf() 按格式輸入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, …]);其用法和printf()相同,不過不是寫到控制台,而是寫到流罷了。 例:fprintf(fp,"%2d%s",4,"Hahaha");9.fscanf() 從流中按格式讀取,其原型是int fscanf(FILE *stream, const char *format[, address, …]);其用法和scanf()相同,不過不是從控制台讀取,而是從流讀取罷了。 例:fscanf(fp,"%d%d" ,x,y);10.feof() 檢測是否已到文件尾,是返回真,否則返回0,其原型是int feof(FILE *stream); 例:if(feof(fp))printf("已到文件尾");11.ferror() 原型是int ferror(FILE *stream);返迴流最近的錯誤代碼,可用clearerr()來清除它,clearerr()的原型是void clearerr(FILE *stream); 例:printf("%d",ferror(fp));12.rewind() 把當前的讀寫位置回到文件開始,原型是void rewind(FILE *stream);其實本函數相當於fseek(fp,0L,SEEK_SET); 例:rewind(fp);13.remove() 刪除文件,原型是int remove(const char *filename); 參數就是要刪除的文件名,成功返回0。 例:remove("c:\\io.sys");14.fread() 從流中讀指定個數的字元,原型是size_t fread(void *ptr, size_t size, size_t n, FILE *stream);參數ptr是保存讀取的數據,void*的指針可用任何類型的指針來替換,如char*、int *等等來替換;size是每塊的位元組數;n是讀取的塊數,如果成功,返回實際讀取的塊數(不是位元組數),本函數一般用於二進制模式打開的文件中。 例: 以下是引用片段:char x[4230]; FILE *file1=fopen("c:\\msdos.sys","r"); fread(x,200,12 ,file1);//共讀取200*12=2400個位元組15.fwrite() 與fread對應,向流中寫指定的數據,原型是size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);參數ptr是要寫入的數據指針,void*的指針可用任何類型的指針來替換,如char*、int *等等來替換;size是每塊的位元組數;n是要寫的塊數,如果成功,返回實際寫入的塊數(不是位元組數),本函數一般用於二進制模式打開的文件中。 例: 以下是引用片段: char x[]="I Love You"; fwire(x, 6,12,fp);//寫入6*12=72位元組 將把"I Love"寫到流fp中12次,共72位元組16.tmpfile() 其原型是FILE *tmpfile(void); 生成一個臨時文件,以"w+b"的模式打開,並返回這個臨時流的指針,如果失敗返回NULL。在程序結束時,這個文件會被自動刪除。 例:FILE *fp=tmpfile();17.tmpnam(); 其原型為char *tmpnam(char *s); 生成一個唯一的文件名,其實tmpfile()就調用了此函數,參數s用來保存得到的文件名,並返回這個指針,如果失敗,返回NULL。
⑨ c語言自定義文件名
C語言在創建文件對象是,可以同時傳入文件名的。
你可以參考下代碼:
FILE *fp;
if((fp = fopen(filename, "w"))==NULL)
{
printf("無法讀取文件");
return;
}
// 文件已經創建了 可以往裡寫東西了
fclose(fp);
return 0;
⑩ C語言創建文件,文件名可以用變數么
C語言中windows環境下,至少有三種方式可以創建文件,文件名都可以使用變數。
常用的函數中,無論是fopen還是CreateFile,其參數都可以使用變數來作為文件名來創建文件和讀寫文件。