我正在编写代码来计算文件的行数和字符数.
#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')
似乎是导致以下错误的原因
分段故障(核心转储)
我无法弄清楚出了什么问题.互联网告诉我,据我所知,我正在检查线路的末端.
您的代码将无法找到,'\n'
因为它已从输入序列中丢弃.来自以下文件getline
:
分隔字符是换行符[...]:当在输入序列中找到时,它从输入序列中提取,但是被丢弃而不被写入s.
你应该寻找'\0'
:
while(line[i])
{
if ((int)line[i]>32) {nChars++;}
i++;
}
Run Code Online (Sandbox Code Playgroud)