教我使用fseek、fread、ftell函数获取一个TXT文件的换行符所在的fp的位置,不要使用strchr函数
时间: 2023-12-14 11:36:41 浏览: 139
详解C语言中fseek函数和ftell函数的使用方法
好的,下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE* fp = fopen("test.txt", "r");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
int c;
long pos = 0; // 记录当前读取位置
while ((c = fgetc(fp)) != EOF) {
if (c == '\n') {
printf("Found newline at position %ld.\n", pos);
}
pos = ftell(fp); // 记录当前位置
}
fclose(fp);
return 0;
}
```
首先打开文件,然后使用 `fgetc` 函数一个字符一个字符地读取,如果读到了换行符就输出当前位置,否则就使用 `ftell` 函数记录当前位置,最后关闭文件。注意,我们需要在循环内部先读取一个字符才能判断是否是换行符,因此循环条件使用了 `!= EOF`。
需要注意的是,换行符在不同的操作系统中可能不同,例如在 Windows 中是 `\r\n`,在 Linux 和 macOS 中是 `\n`。因此如果需要跨平台使用,需要根据实际情况进行调整。
阅读全文