文件中的C行数(UNIX)

时间:2016-03-07 16:46:35

标签: c unix io

我正在尝试查找文本文件中的总行数,但它不起作用(最终行数为0 - 见下文)。这是代码:

#define BUFFER_SIZE 1
int lineNumber = 0;
int columnNumber = 0;
char *byteCurrent;
while (read(openFile, &byteCurrent, BUFFER_SIZE) > 0)
{
        if (byteCurrent[0] != '\0') columnNumber++;
        if (byteCurrent[0] == '\n') lineNumber++;
        printf("%c", byteCurrent);
}

enter image description here

1 个答案:

答案 0 :(得分:0)

此代码存在许多问题。第一个是你有一个未初始化的指针byteCurrent,但这并不重要,因为你实际上并没有使用它指向的东西(这只是一些看似随机的位置),而是使用指针来指针。执行&byteCurrent后,您会获得指向byteCurrent类型的变量char **的指针。

这只是一个问题,另一个问题是文件中没有字符串终结符。如果你在阅读时得到零(这是'\0'是什么),那是因为文件中有一个实际的零,而不是因为你到达某个东西的末尾。这导致columnNumber计算文件中的字符数,而不是任何列号。

第一个问题的解决方案是使用普通的char变量:

char byteCurrent;

第二个问题的解决方案我不知道,因为我不知道你的columnNumber变量应该算什么。