C++ 编写一个程序来计算以‘;结尾的文本文件的行数’; #包括 #包括 int main() { ifstream-infle(“text.txt”); char-ch[50]; int计数=0,i; 对于(i=0;infle.eof()==0;i++) { 填充线(第50章); 如果(ch[i]='\n') if(ch[i-1]='.') 计数++; } 库特 你有排长队的问题 windows上的“\r”有问题 您没有正确地查看该行的末尾 在最后一行中,您可能没有“\n”

C++ 编写一个程序来计算以‘;结尾的文本文件的行数’; #包括 #包括 int main() { ifstream-infle(“text.txt”); char-ch[50]; int计数=0,i; 对于(i=0;infle.eof()==0;i++) { 填充线(第50章); 如果(ch[i]='\n') if(ch[i-1]='.') 计数++; } 库特 你有排长队的问题 windows上的“\r”有问题 您没有正确地查看该行的末尾 在最后一行中,您可能没有“\n”,c++,turbo-c++,C++,Turbo C++,查看此解决方案: #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++); i

查看此解决方案:

#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;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
ifstream-infle(“text.txt”);
字符串str;
整数计数=0;
while(std::getline(infle,str))
{
string::reverse_iterator it=str.rbegin();
而(it!=str.rend()&&iswspace(*it))it++;
如果(*it='.')计数++;
}

cout如果任何一行超过50个字符,则程序未定义(如果文件较长,则原始版本未定义),文件结束测试错误,最后一行不一定以换行结束

你可以这样写

#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;
}
intmain()
{
ifstream-infle(“text.txt”);
std::字符串行;
整数计数=0;
while(infle.getline(line))
{
如果(line.back()=='。)
{
计数+=1;
}
}

cout因为您提到了最大行大小为50。我试图基于这个假设编写一个代码

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;
}
intmain()
{
ifstream-infle(“text.txt”);
字符str[50];int strSize=50;
整数计数=0;
而(infle.getline(str,strSize,“.”){
计数++;
}

无法向循环中添加一些调试,以查看您读入的内容、索引变量等。@Nim我尝试过,我猜循环运行不正常。对于您的问题,请了解和.read。将问题标记为,因为您使用的是该语言的原始1980年代方言。Windows上的换行符没有问题,因为该文件是o在文本模式下打开。我尝试了这个程序,它计算所有的行,无论是否以“.”结尾。@user3500780它修复了。
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;
}
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;
}