我正在尝试查找文本文件中的总行数,但它不起作用(最终行数为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);
}
答案 0 :(得分:0)
此代码存在许多问题。第一个是你有一个未初始化的指针byteCurrent
,但这并不重要,因为你实际上并没有使用它指向的东西(这只是一些看似随机的位置),而是使用指针来指针。执行&byteCurrent
后,您会获得指向byteCurrent
类型的变量char **
的指针。
这只是一个问题,另一个问题是文件中没有字符串终结符。如果你在阅读时得到零(这是'\0'
是什么),那是因为文件中有一个实际的零,而不是因为你到达某个东西的末尾。这导致columnNumber
计算文件中的字符数,而不是任何列号。
第一个问题的解决方案是使用普通的char
变量:
char byteCurrent;
第二个问题的解决方案我不知道,因为我不知道你的columnNumber
变量应该算什么。