作者在 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);
}
}