当前位置:  技术问答>linux和unix

新手求助一道编程题,关于文件操作的

    来源: 互联网  发布时间:2016-12-04

    本文导语:  打开一文本文件,给出字符串(char *parrern)在文件的哪些行出现,要求在屏幕上显示出匹配的行号和那一行的文件内容。 求助。。。 | #include  #include  #include  int main(int argc, char *argv[]) ...

打开一文本文件,给出字符串(char *parrern)在文件的哪些行出现,要求在屏幕上显示出匹配的行号和那一行的文件内容。


求助。。。

|
#include 
#include 
#include 
int main(int argc, char *argv[])
{
FILE *stream;
char buf[255];
int c;
int rowcount=1;
int bufcount=0;
if(argc!=3){
printf("Please enter a filename and stringn");
exit(EXIT_FAILURE);
}
stream=fopen(argv[1],"r");
if(stream==NULL){
printf("Can't open the file: %sn",argv[1]);
exit(EXIT_FAILURE);
}
fseek(stream,0,SEEK_SET);
while((c=fgetc(stream))!=EOF){
if(c=='n'){
if(strstr(buf,argv[2])!=0){
    buf[bufcount]='';
printf("%d ",rowcount);
printf("%sn",buf);
}
rowcount++;
bufcount=0;
}
else{
buf[bufcount++]=c;
}
}
printf("The search is endn");
fclose(stream);
exit(EXIT_SUCCESS);
}
该程序是否满足你的要求?

有个小问题:该程序仅能判断某行是否包含要查询的字符串,不能做到单词的准确匹配.
例如:如果在以上文件中查询字符串“int”,则含有“printf”的行也会打印出来,因为printf中含有int.

如果要做到单词的准确匹配,可定义一个字符串strbuf[],以空格键为间隔,保存单词,再调用strcmp()判断是否一致? 这个留给你自己来实现。

|
这个属于字符串匹配问题。计算行号可以设置一个变量count,遇到换行符就自动加一。还要设一个字符数组,如A[80],用于存放当前扫描的行的字符串,如果该行出现了(char *parrern),则把该数组值及count值输出;若未出现,则继续扫描下一行,并用下一行的字符覆盖数组A[80]中的值。

|
逐行读取,逐行判断

|
设置一个记数器,用于保存行号,然后打开文件用行读取的方式去读,每读一行记数器加一,然后判断下有没有char *parrern里面的内容,有就打印该行和记数器的值,没有继续读下一行.直到读完整个文件.记得每次读之前把buf清空

|
fgets--一次读一行,读到文件结束返回NULL;
strstr--从读出内容中查找指定字符串(没有则返回NULL)

搞个循环,OK了。

|
这里关键是用 strstr这个函数,这个函数实现不难,楼主可以自己用C实现一下!!

    
 
 

您可能感兴趣的文章:

  • 新手求助KDE编程起步
  • 新手请教,linux网络编程。
  • 要加入linux编程队伍,新手需注意什么
  • 新手学Linux/Unix编程,学什么书比较好?
  • linux网络编程新手
  • 新手学习linux编程的困惑!!急切需要解答!!
  • linux编程新手问题?在线等
  • 我是一个新手,jdk 编程用什么工具较好
  • 新手问题(登入UNIX后怎么进入C SHELL编程,命令是什么)
  • 求完整版的电子书《UNIX平台下C语言高级编程指南》,顺便问一个新手问题。
  • 新手求解linux编程两个问题,谢谢!!!
  • 不好意思,小弟是新手,想问下JSP和XML编程时,XML到底是什么,起了个什么作用?
  • 问一个新手问题:在linux下的c语言编程跟windows下有什么不同?
  • 新手询问一个shell编程问题
  • 新手上路》》》shell编程问题(操作文本文件)请高手赐教!!!!谢谢,焦急等待中
  • 编程新手问题:编译时找不到gnome.h文件,但系统肯定安装了gnome开发包,是不是哪里的环境变量设置不对啊?
  • 学习Linux编程新手提问?(有经验的人都进来说说)
  • 内核编程问题,新手上路,多指点!
  • 【新手请教】关于linux下c语言编程
  • 【急】2道Linux Shell编程题,新手求教!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 新手如何加入开源项目 有什么好的c++,java 开源适合新手 请指点!
  • JDBC的问题,新手高手都来看看吧,说不定能帮帮我这个新手呢,谢谢!
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 新手关于驱动开发的疑问
  • 新手有关linux的问题!
  • 新手急求~~~~~~~~~~~~~~~~~~~
  • 新手学习该用哪个版本
  • 面向新手的终端辅助工具 Clicompanion
  • 我是个新手,请各位老兄给介绍基本好书?
  • 新手请教啦~~能不能帮忙推荐几本书
  • 我是新手
  • 新手:用WEB页面修改数据库中的表?
  • Java新手上路之问题
  • 我是一名新手,请问如何学java
  • (新手)这里怎么看到300篇以外的所有文章?(不是搜索)
  • 新手求助!
  • 新手上路,怎样判断网卡是否安装成功?
  • !!新手求救!!
  • 新手在此多谢了:SUN的宠物商店
  • 新手请教,我用VI时按ESC键,总是回嘟嘟嘟嘟响,请问如何去掉!谢谢!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3