/*
程序完成查找指定字符串在文件中所在的行数以及该行的内容,并将结果在屏幕上显示出来
*/
#include
#include
int main()
{
unsigned int i,j,k;
char filename[20]="hello.txt"; //文件名
char str[20]="world"; //将要查找的字符串
char buffer[255]; //缓冲区,储存文件中一行的字符
char buf[20]; //用于比较用的字符串
ifstream fin(filename); //打开文件
//如果文件不存在的处理方法
if(!fin)
{
cout<<"文件"< system("Pause");
return 0;
}
//如果文件没有到结尾则执行此循环
for(i=0;!fin.eof();i++) //其中i记录了行数
{
fin.getline(buffer,255); //从文件中读取一行至缓冲区
//此循环完成查找该行是否有匹配字符串
for(j=0;buffer[j+strlen(str)-1];j++)
{
//循环取出相邻的字符串
for(k=0;k buf[k]=buffer[j+k];
buf[k]='\0';
//将取出的字符串与待查找的字符串比较
if(strcmp(buf,str)==0)
{
cout<<"第"< break;
}
}
}
fin.close(); //关闭文件
system("Pause");
}
--------------------next---------------------
呵呵~~~非常感谢你啊guohao!!!
不过出了点点问题就是不能在一个目录中的多个文本文件中搜索指定字符串的出现
这下边是我们老师的一个提醒:// _findfirst2.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include
#include
#include
#include
#include
#include "shellapi.h"
#include "shlobj.h"
using namespace std;
void EnumerateFolders ();
void EnumerateFiles ();
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
LPITEMIDLIST pidlSelected = NULL;
char temp[MAX_PATH];
LPSTR pszPath=temp;
BROWSEINFO bi = {0};
bi.hwndOwner = NULL;
bi.pidlRoot = NULL;
bi.pszDisplayName = NULL;
bi.lpszTitle = "请选择一个文件夹";
bi.ulFlags = 0;
bi.lpfn = NULL;
bi.lParam = 0;
pidlSelected = SHBrowseForFolder(&bi);
SHGetPathFromIDList(pidlSelected,pszPath);
if(SetCurrentDirectory(pszPath)){
MessageBox(NULL,pszPath,"你选择的文件夹是",MB_OK);
//以上选择了一个文件夹并将其路径存放在pszpath中
MessageBox(NULL,"输出的内容保存在c:\\fileofdirectory.txt中并将用记事本打开","输出内容保存",MB_OK);
}
EnumerateFolders();//输出文件夹
//在文件夹和文件之间插入一个空行
const string& filename="c:\\fileofdirectory.txt";
ofstream file(filename.c_str(),std::ios::app);
file<
EnumerateFiles();//输出文件
ShellExecute(NULL, "open","fileofdirectory.txt", NULL, "c:", SW_MAXIMIZE);
return 0;
}
void EnumerateFolders ()
{
WIN32_FIND_DATA fd;
HANDLE hFind = ::FindFirstFile ("*.*", &fd);
if (hFind != INVALID_HANDLE_VALUE)
{
const string& filename="c:\\fileofdirectory.txt";
ofstream file(filename.c_str());
do {
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
const string& name = fd.cFileName;
if (name != "." && name !="..")file< }
}
while (::FindNextFile (hFind, &fd));
::FindClose (hFind);
}
}
void EnumerateFiles ()
{
WIN32_FIND_DATA fd;
HANDLE hFind = ::FindFirstFile ("*.*", &fd);
if (hFind != INVALID_HANDLE_VALUE)
{
do {
const string& filename="c:\\fileofdirectory.txt";
ofstream file(filename.c_str(),std::ios::app);
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY);
else{
const string& name = fd.cFileName;
if (name != "." && name !="..")file< }
}
while (::FindNextFile (hFind, &fd));
::FindClose (hFind);
}
}
--------------------next---------------------
阅读(1059) | 评论(0) | 转发(0) |