#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include<string.h>
#include <fcntl.h>
void match_pattern(char *argv[])
{
int fd,r,j=0;
char temp,line[100];
if((fd=open(argv[2],O_RDONLY)) != -1)
{
while((r=read(fd,&temp,sizeof(char)))!= 0)
{
if(temp!='\n')
{
line[j]=temp;
j++;
}
else
{
if(strstr(line,argv[1])!=NULL)
printf("%s\n",line);
memset(line,0,sizeof(line));
j=0;
}
}
}
}
main(int argc,char *argv[])
{
struct stat stt;
if(argc==3)
{
if(stat(argv[2],&stt)==0)
match_pattern(argv);
else
{
perror("stat()");
exit(1);
}
}
}
文件内容:
arunds ghh
sdf
hi
hello dude
am arun
我的输出:
./mygrep arun file
arunds ghh
am arun
我得到正确的输出
文件内容:
arun arundfdf arun
arunds ghh
sdf
我的输出:
./mygrep arun file
arun arundfdf arun �5
arunds ghh
我不知道为什么会打印一些不需要的字符。