2016-06-14 92 views
-3
#include<iostream.h> 
#include<fstream.h> 
int main() 
{ 
    ifstream infile("text.txt"); 
    char ch[50]; 
    int count=0,i; 
    for(i=0;infile.eof()==0;i++) 
    { 
     infile.getline(ch,50); 
     if(ch[i]=='\n') 
      if(ch[i-1]=='.') 
       count++; 
    } 
    cout<<"Total number of lines are:"<<count; 
} 

我试过了这段代码,但它似乎并不奏效。我使用了逻辑来获取ch中的所有文件内容,然后检查换行符和'。'
如何让它工作。
请帮忙?编写一个程序来计算以'。'结尾的文本文件的行数

编辑新代码

#include<iostream.h> 
#include<fstream.h> 
int main() 
{ 
    ifstream infile("text.txt"); 
    char ch[50]; 
    int count=0,i; 
    while(!infile.eof()) 
    { 

     infile.getline(ch,50); 
     for(i=1;ch[i]!='\n';i++); 
     if(ch[i-1]=='.') 
       count++;  

    } 
    cout<<"Total number of lines are:"<<count; 
} 
+0

添加一些调试到你的循环来看看你在读什么,你的索引变量等... – Nim

+0

@Nim我试过了,我猜测循环没有正常运行 – user3500780

+0

不要猜测,试图了解什么是发生在那个变量,以及'getline()'在做什么... – Nim

回答

0
  1. 你有问题,排长
  2. 你有“\ r”在Windows
  3. 你是不是在一行的末尾正确看问题。
  4. 在最后一行
  5. 你可能没有“\ n”

退房这一解决方案:

#include <stdlib.h> 
#include<iostream> 
#include<fstream> 
#include<string> 
using namespace std; 
int main() 
{ 
    ifstream infile("text.txt"); 
    string str; 
    int count=0; 
    while(std::getline(infile,str)) 
    { 
     string::reverse_iterator it=str.rbegin(); 
     while(it != str.rend() && iswspace(*it)) it++; 
     if(*it =='.') count++; 
    } 
    cout<<"Total number of lines are:"<<count; 
    return 0; 
} 
+0

由于在文本模式下打开文件,因此Windows上的换行符没有问题。 – molbdnilo

+0

我试过这个程序,它计算所有行,不管是否以'。'结尾。 – user3500780

+0

@ user3500780它修复了。 – SHR

0

如有线长超过五十个字符你的程序是不确定的(原始版本是未定义如果文件更长),您的文件结束测试是错误的,并且最后一行不一定以换行符结束。

你可能会这样写。

int main() 
{ 
    ifstream infile("text.txt"); 
    std::string line; 
    int count = 0; 
    while (infile.getline(line)) 
    { 
     if (line.back() == '.') 
     { 
      count += 1; 
     } 
    } 
    cout << "Total number of lines are:" << count; 
} 
0

既然你已经提到了50作为最大的行大小。我试图根据这个假设编写代码

int main() 
{ 
    ifstream infile("text.txt"); 
    char str[50]; int strSize = 50; 
    int count = 0; 

    while (infile.getline(str, strSize, '.')) { 
     count++; 
    } 

    cout << "Total number of lines are:" << count << endl; 

    infile.close(); 
    return 0; 
} 

这段代码基本上是根据'。'的数量来计算行数。呈现在一行中,句子是否在新行中。

相关问题