1. 程式人生 > >C primier plus 第十三章 13.2標準I/O

C primier plus 第十三章 13.2標準I/O

首先,關於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 +資料夾。