huangch 发布留言 2008-7-23 22:45
无法实现打印与第一个参数指定的模式匹配的行
本人是学c的莱鸟;在这里向各位高手请教!
下面函数是用来实现:打印与第一个参数指定的模式匹配的行的
#include
#include
#define MAXLINE 1000
int getline(char *line, int max)
{
int c;
char *t = line;
while (--max > 0 && (c=getchar()) != EOF && c != '\n')
*line++ = c;
if (c == '\n')
*line++ = c;
*line = '\0';
return (line - t);
}
void main(int argc, char *argv[])
{
char line[MAXLINE];
int found = 0;
if (argc != 2)
printf("Usage: find pattern\n");
else
while (getline(line, MAXLINE) > 0)
if (strstr(line, argv[1]) != NULL) {
printf("%s", line);
}
}
vc编译器并没有指示错误!
但vc命令行中输入为:hello world!
然后再一次运行程序时,
却总是出现:Usage: find pattern
为什么会这样呢??
向各位请教了!huangch 发布留言 2008-7-23 23:00
????VxWorks 发布留言 2008-7-23 23:22
命令行参数用空白字符分割,所以hello world!是两个参数,此时argc等于3
加一个输出试试:
if (argc != 2)
{
printf("argc=%d\n",argc);
printf("Usage: find pattern\n");
}
getling中这一句的t怎么没见定义:
return (line - t);huangch 发布留言 2008-7-23 23:32
[un]VxWorks[/un] 在 2008-7-23 23:22 的发言:[/bo]
命令行参数用空白字符分割,所以hello world!是两个参数,此时argc等于3 加一个输出试试: if (argc != 2) { printf("argc=%d\n",argc); printf("Usage: find pattern\n"); }
getling中这 ... |
谢谢哦!
加上printf("argc=%d\n",argc);
发现argc是等于3;
我将if (argc != 2)改为:
if (argc != 3)就实现了!
谢谢!t有定义
char *t = line;VxWorks 发布留言 2008-7-23 23:35
哎,人老了,这眼睛是越来越不行了[tk01]
页: [1]