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 +文件夹。

猜你喜欢

转载自blog.csdn.net/LPJLBJ/article/details/83309177