`

查找打印出包含指定字符串的那一行

 
阅读更多
/*此程序是将输入中包含特定“模式”或字符串的各行打印出来

  这是UNIX程序grep 
  这个任务划分如下:
  
  while(还有没处理的行) 
     if(该行包含指定的模式)
         打印该行;  
  
  分析程序的整体架构 
*/
#include "stdio.h"
#define MAXLINE 1000 /*最大输入行*/

int getline(char line[] , int max);
int strindex(char source[] , char searchfor[]);

char pattern[] ="ould"; /*待查找的模式*/

main()
{
   char line[MAXLINE];
   int found=0;
   
   while(getline(line,MAXLINE)>0)
      if(strindex(line,pattern)>=0)
      {
         printf("%s",line);
         found++;                             
      }
   return found;
   
   
   
   
   
}

/*getline函数:将行保存在s中,返回该行的长度 lim应该是s数组的长度*/
int getline(char s[],int lim)
{
    int c,i;
    i=0;
    while(--lim>0 && (c=getchar())!=EOF && c!='\n')
       s[i++] = c;
       
    if(c=='\n')
       s[i++] = c;
       
    s[i] = '\0';
    
    return i;
    
}

/*strindex函数:返回t在s中的位置,如果未找到返回-1*/
int strindex(char s[],char t[])
{
    int i,j,k;
    
    for(i=0;s[i]!='\0';i++)
    {
       for(j=i,k=0; t[k]!='\0'&&s[j]==t[k]; j++,k++)
         ;
       if(k>0&&t[k]=='\0')
         return i;
                              
    }
    return -1;
    
}
















稍微修改

/*此程序是将输入中包含特定“模式”或字符串的各行打印出来

  这是UNIX程序grep 
  这个任务划分如下:
  
  while(还有没处理的行) 
     if(该行包含指定的模式)
         打印该行;  
  
  分析程序的整体架构 
*/
#include "stdio.h"
#define MAXLINE 1000 /*最大输入行*/

int getline(char line[] , int max);
int strindex(char source[] , char searchfor[]);

char pattern[] ="ould"; /*待查找的模式*/

main()
{
   char line[MAXLINE];
   int found=0;
   
   while(getline(line,MAXLINE)>0)
      if(strindex(line,pattern)>=0)
      {
         printf("%s",line);
         found++; 
         printf("%d\n",found);                           
      }
   return found;
   
   
   
   
   
}

/*getline函数:将行保存在s中,返回该行的长度 lim应该是s数组的长度*/
int getline(char s[],int lim)
{
    int c,i;
    i=0;
    while(--lim>0 && (c=getchar())!=EOF && c!='\n')
       s[i++] = c; /* 如果把c!='\n'这个条件去掉,会出现什么结果,结果是死循环
	                  所以'\n'是为了使输入字符串结束,结束循环,
					  也可以用输入一个标记数结束输入循环
				   */
       
    if(c=='\n')
       s[i++] = c;
       
    s[i] = '\0';
    
    return i;
    
}

/*strindex函数:返回t在s中的位置,如果未找到返回-1*/
int strindex(char s[],char t[])
{
    int i,j,k;
    
    for(i=0;s[i]!='\0';i++)
    {
       for(j=i,k=0; t[k]!='\0'&&s[j]==t[k]; j++,k++)
         ;
       if(k>0&&t[k]=='\0')
         return i;
                              
    }
    return -1;
    
}




分享到:
评论

相关推荐

    查找包含字符串的行

    在C语言中,查找包含特定字符串的行是一项基础但重要的任务,这通常涉及到文本处理和文件操作。在本文中,我们将深入探讨如何使用C语言来实现这个功能,以及相关的字符串处理函数和技术。 首先,我们需要理解C语言...

    基于C++编写一个程序,.编写一个程序,要求用户输入文件名和要查找的字符串 程序在文件中查找指定的字符串

    在C++编程中,实现一个程序来查找文件中特定字符串是一项基本任务,它涉及到文件操作、字符串处理和用户交互。以下是一个详细的步骤说明,以及如何根据给定的标题和描述来构建这样的程序。 首先,我们需要引入必要...

    查找指定字符串+查找文本文件中的指定字符串

    3. 执行查询并处理结果,打印出包含指定字符串的行及对应的表名和列名。 二、在文本文件中查找指定字符串 在C++中查找文本文件中的指定字符串涉及到文件I/O操作。以下是一个基本的步骤: 1. 打开文件:使用`...

    易语言源码寻找指定字符串出现个数.rar

    本压缩包“易语言源码寻找指定字符串出现个数.rar”包含了一个易语言程序,该程序的主要功能是计算并显示一个文本文件中特定字符串出现的次数。通过这个程序,我们可以深入学习易语言中的字符串处理、文件操作以及...

    任意文件中查找字符串程序_

    在DOS环境下,用户经常需要查找指定文件中是否包含特定的字符串,或者统计字符串在文件中的出现次数。为此,DOS提供了一个内置命令`find`来满足这一需求。 #### 二、DOS find 命令详解 1. **基本用法**: - `find ...

    FindStr_搜索包含字符串的文件;_搜索文件_搜索字符串_

    这个工具在处理大量文本数据时尤其有用,能帮助我们快速定位到含有特定字符串的文件,从而提高工作效率。 `FindStr`的基本语法如下: ``` findstr [/b] [/e] [/l] [/r] [/s] [/i] [/x] [/v] [/n] [/m] [/o] [/p] ...

    查找含指定字符串的文件

    例如,`run(1)(1).bat`可能是一个批处理文件,其中可以包含如下命令来查找含有特定字符串的文本文件: ```bat for /r %d in (*) do findstr /s /m /n "指定字符串" "%d" ``` 这里,`for /r`用于递归遍历当前目录...

    如何在一个长文件中查找某一个特定的字符串(2KB)

    在IT领域,文本处理是一项常见的任务,特别是在处理大型文件时,快速有效地查找特定字符串显得尤为重要。这个场景下,我们关注的焦点是如何在一个长文件中高效地查找特定的字符串。这通常涉及到编程技术,如文本处理...

    从文本文件中查找字符串

    这些命令行工具可以遍历指定目录下的所有文件,查找包含特定字符串的文件。例如,`grep "function_name" *.java`将在当前目录下所有的.java文件中查找“function_name”。 对于更复杂的情况,例如在不同后缀的文件...

    命令行下在文件中查找并替换匹配的字符串的工具

    当我们需要在大量文本文件中快速查找并替换特定字符串时,`sed`(Stream Editor)就是一个非常强大的工具。`sed` 是一个流编辑器,它可以从输入流(通常是文件或管道)中读取数据,对数据进行处理,然后将处理后的...

    提取Java文件中包含的字符串

    下面是一段基础的Java代码示例,用于遍历指定目录下的所有Java文件,并提取其中包含特定字符串的内容: ```java import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; public class ...

    shell 批量处理 字符串指令行

    这篇博客“shell批量处理字符串指令行”可能探讨了如何利用shell的特性来处理字符串,包括查找、替换、截取等操作。 首先,让我们了解一些基本的shell字符串处理命令: 1. **变量赋值**:在shell中,我们可以通过`...

    字符串查找工具.rar

    这款工具通过其强大的搜索算法,极大地简化了用户在目录层级深入的文件系统中查找特定字符串的过程,从而提高了工作效率。 首先,我们来深入了解一下字符串查找的基本概念。在计算机科学中,字符串是字符序列,可以...

    python打印变换特定字符

    print("Hello\nWorld") # 这会在新的一行打印"World" print("First\tSecond") # "First"和"Second"之间会有一个制表符的间隔 ``` 2. **字符串格式化** 在Python2中,我们通常使用`%`操作符进行字符串格式化,而...

    VB字符串解析的程序例子(VB源代码)

    VB还提供了其他字符串处理函数,如`Mid`用于提取字符串的一部分,`Left`和`Right`用于获取字符串的左侧或右侧部分,`InStr`和`InStrRev`用于查找子字符串的位置,以及`Replace`函数用于替换字符串中的特定子串。...

    C字符串函数总结

    2. **`get(s)`**: 从标准输入设备读取一串字符并存入字符串`s`中,直到遇到新行或文件结束符。 3. **`putchar(c)`**: 向标准输出设备输出一个字符`c`。 4. **`puts(s)`**: 输出字符串`s`及其后的新行符。 5. **`...

    Python openpyxl 遍历所有sheet 查找特定字符串的方法

    `find_false_in_sheet`函数接收一个`Worksheet`对象作为参数,通过迭代每一列(`iter_cols()`)和每个单元格(`cell`),检查单元格的值是否不为空,然后使用`find`方法查找特定字符串。如果找到匹配,就打印出该...

    OJ_判断字符串类型

    `String`类提供了许多方法,如`length()`用于获取字符串长度,`charAt(int index)`用于获取指定位置的字符,以及`indexOf(String str)`和`substring(int beginIndex, int endIndex)`用于查找和截取子字符串。...

    bash过滤字符串的命令介绍

    更复杂的用法如`grep -r "string" directory` 将在指定的目录及其所有子目录中搜索字符串。 接下来是sed命令,它是一个流编辑器,逐行处理输入数据。sed的工作方式是将每一行内容先存入模式空间,然后执行一系列...

    C# 通过进程命令行包含的字符串结束进程

    标题“C# 通过进程命令行包含的字符串结束进程”指的是使用C#编写代码,根据进程的命令行参数(如程序名、脚本名或路径)来查找并终止相关进程。这种技术在需要批量处理相似任务或清理特定应用实例时非常有用。接...

Global site tag (gtag.js) - Google Analytics