c/c++对文件统计函数

转载 2008年09月29日 12:37:00

1.统计文件中的字符行数
std::string str;
std::fstream f;
f.open("b.txt",std::fstream::in|std::fstream::out) ;
long count=0;
while(std::getline(f,str))
   {
              count++;
        }


2.统计一个文本文件的行数并加行号和空格
(统计一个文本文件的行数.输入文件的文件名作为命令行参数的传入,输出文件名为stdout,内容包括输入文件中的每一行文本,并且在每一行前加上行号和一个空格.)

#include<stdio.h>
main()
{FILE *fp,*fp1;
int cap=0, i=1;
char mid,filename[10];
printf("Input the filename like *.txt!/n");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL)
{printf("Can not open the file!/n");
exit (0);
}
if((fp1=fopen("stdout.txt","w+"))==NULL)
{printf("Can not open the file!/n");
exit (0);
}
while(!feof(fp))
{
mid=fgetc(fp);
if(mid=='/n') cap++;
}
fclose(fp);
if((fp=fopen(filename,"r"))==NULL)
{printf("Can not open the file!/n");
exit (0);
}
fprintf(fp1,"%d ",i++);
while(!feof(fp))
{
if(fputc(fgetc(fp),fp1)=='/n')
fprintf(fp1,"%d ",i++);
}
printf("cap=%d /n",cap+1);
fclose(fp);
fclose(fp1);


【todototry】:
统计文件的单词数
读文件的一行


int main()
{
 ifstream infile;
 string filename;
 cout << "Please enter the file name: ";
 cin >> filename;

 infile.open(filename.c_str());
 string line;
 getline(infile, line, '/n');
 infile.close();

 vector<string> wordsOfLine;
 string::size_type pos = 0, prev_pos =0;
 string word;
 while ((pos = line.find_first_of(' ', pos)) != string::npos)
 {
  word = line.substr(prev_pos, pos - prev_pos);
  prev_pos = ++pos;
  wordsOfLine.push_back(word);
 }
 wordsOfLine.push_back(line.substr(prev_pos, pos - prev_pos));

 size_t numOfLine = wordsOfLine.size();
 cout << numOfLine << "words" << endl;
}
读整个文件的:

int main()
{
    ifstream infile;
    string filename;
    cout << "Please enter the file name: ";
    cin >> filename;

    infile.open(filename.c_str());
    string line;
    vector<string> wordsOfFile;
    while (getline(infile, line, '/n'))
    {
        string::size_type pos = 0, prev_pos =0;
        string word;
        while ((pos = line.find_first_of(' ', pos)) != string::npos)
        {
            word = line.substr(prev_pos, pos - prev_pos);
            prev_pos = ++pos;
            wordsOfFile.push_back(word);
        }
        wordsOfFile.push_back(line.substr(prev_pos, pos - prev_pos));
    }

    infile.close();

    size_t numOfLine = wordsOfFile.size();
    cout << numOfLine << "words" << endl;

    return 0;
}

加上判断即可,看着用吧,呵呵^_^okokok

【lightnut】:
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int CountSubString(string const& str, string const& substr)
{
   int nCount = 0;

   string::size_type substrSize = substr.size();
   string::size_type idxSub = str.find(substr, 0);
   while (idxSub!=string::npos) {
      ++nCount;
      ++idxSub;
      idxSub = str.find(substr, idxSub);     
   }

   return nCount;
}

int CountStrInFile(string const& filename,  string const& str)
{
   ifstream inf(filename.c_str());
   if (!inf) {
      cout<<"Error: can't open the file: "<<filename<<endl;
      exit(1);
   }

   string infStr;
   int nSubStrFound = 0;
   while (inf && !inf.eof()){
      inf>>infStr;
      nSubStrFound += CountSubString(infStr, str);     
   }
   
   return nSubStrFound;
}

 

int main()
{
   string filename("d://temp//test.txt");   // the file name to search string
   string strToCount("abc");                // the string to count
  
   int nCount = CountStrInFile(filename, strToCount);
   cout<<nCount<<" times of /""<<strToCount<<"/" found in file: "<<filename<<endl; 

   strToCount = "aaa";
   nCount = CountStrInFile(filename, strToCount);
   cout<<nCount<<" times of /""<<strToCount<<"/" found in file: "<<filename<<endl; 

   system("pause");
   return 0;
}

//测试文件test.txt内容:
abc abc abc lpte yejylyyryryljryjrabc
logyy[yuuujabcabc
aaaaaa aabeee aaa

//测试输出:
6 times of "abc" found in file: d:/temp/test.txt
5 times of "aaa" found in file: d:/temp/test.txt


【xuzheng318】:
#include <iostream>
#include <math.h>

using namespace std;

int main()
{
char str1[255],str2[255],*p1,*p2, *temp;
int sum=0;
cout<<"intput two strings"<<endl;
cin>>str1;
cin>>str2;
p1=str1;
p2=str2;

while (*p1!='/0')
{
temp = p1;
if(*temp==*p2)
{

while((*temp==*p2)&&(*p2!='/0')&&(*temp!='/0'))
{
temp++;
p2++;
}
}
p1++;
if(*p2=='/0') sum=sum+1;
p2=str2;
}
cout<<sum;
return 0;

}


【crypticjade】:
谢谢各位了

【hamlet0168】:
#include <iostream>
using namespace std;
#include <fstream>
#include <string>

int WordCount_Of_File(const string filename , const string word);

void main()
{
    cout<<WordCount_Of_File("word.txt","er")<<endl;
system("pause");
}

//在指定文件中查找单词,并返回找到的单词总数
int WordCount_Of_File(const string filename , const string word)
{
//打开文本文件以便读入
ifstream infile(filename.c_str (),ios::in);
if(!infile)
{
   cerr<<"unable to open file"<<filename<<"--bailing out!/n";
   ::system ("pause");
   return 0;
}
//单词总数
int iCount=0;
//单行文本
string text_line ;
//依次读取每一行,这也以为着,将来无法
//使用此函数来查找诸如 "a/nb"字样的单词
//因为我把它截断了
while(getline(infile,text_line,'/n'))
{
//为了方面检查结果,我把每一行的内容输出了,可去掉
cout<<text_line<<endl;
string::size_type pos=0;//记录找到单词的位置
while((pos=text_line.find(word,pos))!=string::npos)
{
//找到单词,单词总数+1
iCount++;
//这里用的是++pos,而不是pos+=word.size()
//比如在字符"aaaaa"查找"aaa",答案是1还是3的问题
//我认为应该是3,所以++pos;
++pos;
}
}
return iCount;
}

 

 

C/C++ 统计函数调用时间

写一个小程序来统计函数调用时间,简单明了直接看代码,有三个文件,FunTimer.h , FunTimer.cpp ,FunTimerMan.cpp 分别如下: FunTimer.h文件 #ifn...
  • ZZ7ZZ7ZZ
  • ZZ7ZZ7ZZ
  • 2015年04月13日 23:37
  • 1603

c/c++测试函数的运行时间(八种方法)(转)

目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但...
  • jhcconan614
  • jhcconan614
  • 2017年02月22日 20:04
  • 5505

C++ Map 统计文件中的词频

#include #include #include #include #include using namespace std; void display_map(map ...
  • gududanxing
  • gududanxing
  • 2013年09月04日 16:12
  • 2012

图像直方图统计及直方图匹配

直方图统计方法c++实现过程: int hist[256];for(int i=0; i
  • C_Bright
  • C_Bright
  • 2014年01月11日 13:44
  • 2698

在.c文件中调用c++定义的函数

问题描述:用c语言写的程序
  • wang11234514
  • wang11234514
  • 2014年04月19日 16:57
  • 2700

C语言代码行数分类统计小程序(源代码)

1 需求分析  1) 问题描述: 读入一个(最多9个)C程序代码文件,统计程序中代码、注释和空行数以及函数的个数,显示函数名并生成相应的记录日志。  2) 基本要求如下:  (1)、把程序文件(如.c...
  • kuweicai
  • kuweicai
  • 2016年05月07日 20:31
  • 2551

C++编程思想3-利用C++进行文件操作封装C函数

我们知道在C语言中许多文件操作的函数 很零散,在使用的时候不得不四处查找 ,我们是否能向C++中 的   CFile类等一样封装我们自己的文件操作呢?当然可以,我们这里我封装的是 C语言的文件操作函数...
  • yue7603835
  • yue7603835
  • 2011年12月30日 11:39
  • 3161

c++经典题----统计一个文件“is”单词的个数

main.cpp #include #include using namespace std; int main() { fstream in;//文件读入流 in.open("k:\\f...
  • tobe_numberone
  • tobe_numberone
  • 2017年10月04日 17:41
  • 759

统计代码的行数 c实现

做关于PDF解析快一个月了,今天和同学tao
  • u011260008
  • u011260008
  • 2014年07月16日 23:25
  • 949

C/C++ file操作函数大全,很详细,很强大

clearerr(清除文件流的错误旗标) 相关函数 feof 表头文件 #include 定义函数 void clearerr(FILE * stream); 函数说明 clearerr(...
  • xiexievv
  • xiexievv
  • 2012年04月20日 14:48
  • 2486
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c/c++对文件统计函数
举报原因:
原因补充:

(最多只允许输入30个字)