青灯古佛 发表于 2016-6-5 21:01:27

求助

#include <stdio.h>
#include <stdlib.h>

int main (int argc,char *argv[])
{
        int ch;
        FILE *fp;
        long count=0;

        if(argc!=2)
        {
                printf("Usage:%s filename\n",argv);
                exit (1);
        }
        if ((fp=fopen(argv,"r"))==NULL)
        {
                printf("Can't not open %s\n",argv);
                exit(1);
        }
        while ((ch=getc(fp))!=EOF)
        {
                putc(ch,stdout);
                count++;
        }
        fclose(fp);
        printf("File %s has %ld characters\n",argv,count);
        return 0;
}
请问这个程序到底什么意思?这个变量argc什么意思,都没有初始化,怎么又在if语句中比较了,这个是书上的例子,但没讲这些细节,这是说明了文件操作的函数,求助

青灯古佛 发表于 2016-6-5 21:24:29

各位,别光看,帮我解答下谢谢啦

花落、季 发表于 2016-6-5 22:08:44

首先,main函数是程序的入口,也就是操作系统执行你的程序是从main开始执行的。不知道你用过ping命令吗,ping后面输入的ip就是ping程序的参数。main函数的那个形参argv就是用来存储程序参数的,因为参数可以有多个,所以使用char*型的数组来存储,而argc就是用来存储参数的个数。
事实上,argc(也就是参数个数)是大于等于1。因为argv中存储的第一个参数就是程序本身的路径。你的程序里if(argc!=2)也就是判断程序执行时后面有没有输入参数。你可以在cmd中执行以下这个程序,后面加一个文本文件路径的参数。like this:xxx.exe filename.txt

康小泡 发表于 2016-6-6 15:50:26

那个是控制台接受的参数的个数的意思。第二参数十控制台接受的参数

李星 发表于 2016-6-6 23:13:37

{:5_98:}兄弟这个程序其实就是说好程序 开始了第一步来看看有几个参数, argc!=2 只要不是2个的参数时就把第一个参数打印出来@花落、季 已经说过的就是该程序的路径 ok.....   
   如果还有参数呢 就来看看它是不是空argc == null如果是空就拜拜,不是的话就打印出来并且检测出一共有多少个字符....{:5_95:}
页: [1]
查看完整版本: 求助