一种从相反顺序读取并忽略特定数量的字符的方法

a way to read from the reverse order and ignore a specific amount of characters

提问人:maverk 提问时间:10/8/2023 最后编辑:Ryleymaverk 更新时间:10/8/2023 访问量:67

问:

我希望 C 语言中的程序以相反的顺序从特定部分读取文件,忽略特定数量的字符被打印。例如:

hello world

我想开始阅读,但我想忽略前 3 个字符,只打印worldwo

#include <stdio.h>

#define CHARACTER -1

int main(){
    FILE *file = fopen("temp.txt", "r");

    fseek(file, -3, SEEK_END);
    char print ;
    fseek(file, print = CHARACTER, SEEK_CUR);


    char buffer[615];
    fscanf(file, "%s", buffer);
    printf("%c", print);
}
C 文件处理 STDIO

评论

1赞 Some programmer dude 10/8/2023
寻求到最后。搜索“forward”(从当前位置开始)并读取一个字符。如果不是空格,则丢弃该字符并查找前一个字符(您现在需要从当前位置查找)。如果找到空格,请将两个字符正好读入缓冲区,以 null 结尾缓冲区,然后打印它。-1-2
1赞 Some programmer dude 10/8/2023
然后就寻找到最后。查找 5 个字节。读取两个字节(使用 、 或 format )。就是这样。freadfscanf"%2s"
1赞 Some programmer dude 10/8/2023
顺便说一句,请注意,它不知道换行符变体及其翻译。在 Windows 上,换行符是两个字符,但当您从文本文件中读取时,它将被转换为单个字符。fseek
1赞 pmg 10/8/2023
fscanf("%2s", buffer)读取 2 个“字母”并添加一个到缓冲区......不正确的 C:......还要注意文件中常见的末尾换行符'\0'seek(-5); scanf("%2s")
1赞 pmg 10/8/2023
还有一件重要的事情......这感觉不像是一个解决方案,它感觉像是一个笨蛋:它适用于你现在关心的非常具体的情况,在现实世界的一般情况下是行不通的

答: 暂无答案