之前寫了一下C語言操作文件的代碼,將打要讀寫的文件名直接用字符串常量的方式寫在代碼里面,只要運行目錄下存在需要文件,調試和雙擊打開都沒問題,唯獨Win命令行運行是出現問題。
於是嘗試將需要打開和寫入的文件名在命令行以字符串方式輸入,然后用main函數的char * argv[]傳參,問題得到有效解決。
原創隨筆,轉載注明出處,謝謝!
代碼如下:
1 #include<stdio.h> 2 #include<stdlib.h> 3 FILE *fp,*fp1; 4 int main(int argc,char* argv[]) 5 { 6 int ch,count=0; 7 if(argc!=3) 8 { 9 printf("Usage:%s filename\0",argv[0]); 10 exit(EXIT_FAILURE); 11 } 12 13 if((fp=fopen(argv[1],"r"))==0||(fp1=fopen(argv[2],"w"))==0) /*argv[1]和argv[2]分別是指向命令行第二個和第三個參數的指針, 14 即要讀和寫的文件名,包含文件路徑*/ 15 { 16 printf("openerr!\n"); 17 //char c=getchar(); 18 exit(0); 19 } 20 21 while(fscanf(fp,"%c",&ch)==1) //這里用fscanf函數控制不會多讀值,用!feof(fp)控制會多讀一個值 22 { 23 printf("%c",ch); 24 fprintf(fp1,"%c",ch); 25 count++; 26 } 27 printf("%d\n",count); 28 //char d =getchar(); 29 return 0; 30 }
運行結果:



