C primier plus 第十三章 13.2標準I/O
阿新 • • 發佈:2018-12-08
首先,關於main(int argc,char *argv[ ])。參考百度百科中的解釋。
https://baike.baidu.com/item/argc%20argv/10826112?fr=aladdin
1. argc的值是命令列引數的個數
什麼是命令列引數?
在命令列下呼叫程式(假設程式名為2.exe)
c:\2.exe file1 file2
這時的“c:\2.exe” “file1” “file2”這三個都是命令列引數
特別注意的是,argc 是指命令列引數變數的個數,包括程式執行時的全路徑名,即全路徑名也算一個變數!
2. char *argv[ ]: 指標 陣列,用來存放指向你的字串引數的指標,每一個元素指向一個引數
argv[0] 指向程式執行的全路徑名
argv[1] 指向在DOS命令列中 執行程式名 後的第一個字串
argv[2] 指向執行程式名後的第二個字串
......
argv[argc]為NULL。
下面,給出程式清單13.1的執行示意圖:
#include<stdio.h> #include<stdlib.h> //為exit()函式提供原型 int main(int argc,char *argv[]) //啟用main()中兩個引數的使用 { int ch; //存放字元 FILE *fp; //檔案指標 long count=0; //記錄字元個數 if(argc!=2) //為什麼是!=2,路徑名算一個變數引數,檔名字算一個變數引數!!! { printf("Usage: %s filename\n",argv[0]); exit(1); } if((fp=fopen(argv[1],"r"))==NULL) //fopen()函式有兩個引數。第一個引數argv[1]是要開啟的 //檔名字,更確切地說,是該檔名的字串的地址。 //第二個引數是指定檔案開啟模式(參考表13.1). { printf("Can't open %s\n",argv[1]); exit(1); } while((ch=getc(fp))!=EOF) { putc(ch,stdout); count++; } printf("\n"); if(fclose(fp)!=0) printf("Error in closeing file %s\n",argv[1]); printf("File %s has %ld characters\n",argv[1],count); return 0; }
開始編譯,完成後找到count.exe這個檔案;創造一個文字檔案file.txt。
特別注意,兩檔案必須在同一個資料夾裡面!
開啟cmd視窗。
1.檔案直接放在F盤。
輸入完畢後按下Enter鍵即可。
2.檔案放在F盤的檔案裡面,如B資料夾。
特別注意在cmd中要訪問資料夾,記得cd +資料夾。