字符\r
和\n
是单个字符,因此在阅读您的输入时,您不会\\
在其中找到字符。此外,如果您在 Windows 上,您应该使用 mode 打开文件以"rb"
二进制模式打开它,否则运行时将删除\r
字符。
FILE *fp = fopen(fileName, "rb");
int lastchar = 0;
int lineCount = 0;
int c;
while ((c = fgetc(fp)) != EOF) {
if (lastchar == '\r' && c == '\n')
lineCount++;
lastchar = c;
}
printf("line count: %d\n", lineCount);
如果你真的想计算四个字符的连续性\\
r
\\
n
,那么你可以这样做(看起来很奇怪,但也许你的输入中有引用的字符序列):
FILE *fp = fopen(fileName, "rb");
char prevchars[4] = { 0, 0, 0, 0 };
char fingerprint[4] = { '\\', 'r', '\\', 'n' };
int lineCount = 0;
int c, i;
while ((c = fgetc(fp)) != EOF) {
if (memcmp(prevchars, fingerprint, 4) == 0)
lineCount++;
for (i = 1; i < 4; i++)
prevchars[i - 1] = prevchars[i];
prevchars[3] = (char)c;
}
printf("line count: %d\n", lineCount);