2016-06-14 3 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, а затем проверьте символ новой строки и '.'
Как мне заставить работать.
Пожалуйста, помогите?Напишите программу для подсчета количества строк из текстовых файлов, которые заканчиваются на '.'

EDIT новый код

#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. у вас есть проблемы с «\ г» на окнах
  3. вы не глядя правильно в конце строки ,
  4. в последней строке вы не можете иметь «\ п»

проверить это решение:

#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

@ пользователь3500780 исправлено. – SHR

0

Ваша программа не определен, если любая строка длиннее пятидесяти символов (оригинальная версия undefined, если файл длиннее), ваш тест конца файла неверен, а последняя строка не обязательно заканчивается новой строкой.

Вы можете написать это примерно так.

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; 
} 

Этот код в основном подсчитывает количество строк на основе числа ". присутствовать в строке, является ли предложение в новой строке или нет.

Смежные вопросы