分段故障搜索终点

Rob*_*yen 2 c++

我正在编写代码来计算文件的行数和字符数.

#include <fstream>
#include <iostream>
#include <stdlib.h>    
using namespace std;


int main(int argc, char* argv[])
    {
    ifstream read(argv[1]);


    char line[256];
    int nLines=0, nChars=0, nTotalChars=0;
    read.getline(line, 256);

    while(read.good())                      /
        {
        nChars=0;

        int i=0;
        while(line[i]!='\n')
            {

            if ((int)line[i]>32) {nChars++;}
            i++;
            }

        nLines++;
        nTotalChars= nTotalChars + nChars;
        read.getline(line, 256);
        }
    cout << "The number of lines is "<< nLines << endl;
    cout << "The number of characters is "<< nTotalChars << endl;
    }
Run Code Online (Sandbox Code Playgroud)

该行while(line[i]!='\n')似乎是导致以下错误的原因

分段故障(核心转储)

我无法弄清楚出了什么问题.互联网告诉我,据我所知,我正在检查线路的末端.

das*_*ght 6

您的代码将无法找到,'\n'因为它已从输入序列中丢弃.来自以下文件getline:

分隔字符是换行符[...]:当在输入序列中找到时,它从输入序列中提取,但是被丢弃而不被写入s.

你应该寻找'\0':

    while(line[i])
        {
        if ((int)line[i]>32) {nChars++;}
        i++;
        }
Run Code Online (Sandbox Code Playgroud)