<<THE C PROGRAMMING LANGUAGE>>p101 if (argc!=1) 真心搞不懂怎么运行的

如果argc不等于1就输出 Usage : find ......

那么argc =1时,原理上知识文件名了啊~~

那么else后面的怎么办呢~?

#include <stdio.h>
#include <string.h>
#define MAXLINE 1000

int getline(char *line, int max);

/* find: print lines that match pattern from 1st arg */
main(int argc, char *argv[])
{
char line[MAXLINE];
long lineno = 0;
int c, except = 0, number = 0, found = 0;

while (--argc > 0 && (*++argv)[0] == '-')
while (c = *++argv[0])
switch (c) {
case 'x':
except = 1;
break;
case 'n':
number = 1;
break;
default:
printf("find: illegal option %c\n", c);
argc = 0;
found = -1;
break;
}
if (argc != 1)
printf("Usage: find -x -n pattern\n");
else
while (getline(line, MAXLINE) > 0) {
lineno++;
if ((strstr(line, *argv) != NULL) != except) {
if (number)
printf("%ld:", lineno);
printf("%s", line);
found++;
}
}
return found;
}

第1个回答  2011-10-27
比如说你这个程序是叫做 a,那么你的可执行文件加参数的时候开始输入的a是要算进去的,所以不存在argc本身就为0的情况。换言之,a就是你的第一个参数,所以这样就对了
第2个回答  2011-11-02
argc在前面 while (--argc > 0 && (*++argv)[0] == '-') 已经自减一次了

这里是1表明之前值为2,程序正常执行。
第3个回答  2011-11-08
void Complex::show(Complex x)
{
if (x.imcy == 0) //虚部是否为0
{
printf("结果为: %0.2f\n", x.real);
}
else
{
if (x.real == 0) //实部是否为0
{
printf("结果为: %0.2f\n", x.imcy);
}
else
{
printf("结果为: %0.2f+%0.2fi\n", x.real,x.imcy);
}本回答被提问者采纳
相似回答