C Primer Plus 第十三章 编程练习11

作者在 2013-05-13 12:28:12 发布以下内容
/*
编写一个程序,接受两个命令行参数.
第一个参数为一个字符串;第二个为文件名.
程序打印文件中包含字符串的所有行.
因为这一任务是面向行而不是面向字符的.所以要用fgets()而不是getc().
使用标准C库函数strstr()在 第一行中搜索这一字符串. 
*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 1024

void disp(FILE *, char *);

int main(int argc, char *argv[])
{
	FILE *fp;
	
	
	if(argc != 3)
	{
		fprintf(stderr, "Wrong number of parameters.\n");
		exit(1);
	}
	
	
	if((fp = fopen(argv[2], "r")) == NULL)
	{
		fprintf(stderr, "Can't open file: \"%s\".", argv[2]);
		exit(2);
	}
	
	disp(fp, argv[1]);
	
	fclose(fp);
	
	printf("\n\nDone.\n");
	return 0;
}

void disp(FILE * fp, char * str)
{
	char line[SIZE];
	while((fgets(line, SIZE, fp)) != NULL)
	{
		if(strstr(line, str))
			fputs(line, stdout);
	}
}
文章评论,共0条
游客请输入验证码
浏览41409次