文件操作小问题
先贴代码
#include<stdio.h>
#include<stdlib.h>
#define BUF 256
int has_ch(char ch,const char * line);
int main(int argc,char * argv[])
{
FILE *fp;
char ch;
char line[BUF];
if(argc!=3)
{
printf("Usage:%s character filename\n",argv[0]);
exit(1);
}
ch=argv[1][0];
if((fp=fopen(argv[2],"r"))==NULL)
{
printf("Can't open %s\n",argv[2]);
exit(2);
}
while(fgets(line,BUF,fp)!=NULL)
{
if(has_ch(ch,line))
fputs(line,stdout);\\为什么是输出的一行,而不是一个字符?
}
fclose(fp);
return 0;
}
int has_ch(char ch,const char *line)\\这个函数只是证明相同的字符是哪一个
{
while(*line)
if(ch==*line++)
return (1);
return 0;
}
has_ch函数的功能是遇到相同字符返回1;为什么输出了一行?
比如文件里字符有abcde;而我在命令行参数里输入e;他把这一整行都输出来了?
[解决办法]
fputs(line,stdout);
这可不就是输出一行吗?