首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取-文件算法不断重复前几行的数据

读取-文件算法不断重复前几行的数据
EN

Stack Overflow用户
提问于 2022-04-02 06:11:19
回答 1查看 31关注 0票数 0

我正在尝试编写一种算法,该算法能够在搜索特定字符串的文件中读取,在我的示例中称为“label”。这个概念很简单:将每一行读到EOF,并为每一行处理搜索特定字符序列的内容。

职能:

代码语言:javascript
复制
char *fsearch(int fd, char *label){
    char c, buffer[500];
    int len, end, k;

    if((fd = open("C:\\Password-Manager\\pssw.txt", O_RDONLY, 0)) == -1){
        fprintf(stderr, "Unable to locate file.");
        return NULL;
    }
    for(len = 0; read(fd, &c, 1) == 1;){
        if(c == '\n')
            len++;
    }
    printf("[DEBUG]: File-Length -> %d\n", len);

    lseek(fd, 0, SEEK_SET);
    end = k = 0;
    while(len > 0){
        while(read(fd, &c, 1) == 1){
            if(c == '\n')
                break;
            buffer[k++] = c;
        }
        printf("[DEBUG]: %s\n", buffer);
        len--;
    }
}

函数尚未完成,下一步将是解析内容,但问题就发生在这里。使用printf()在屏幕上显示已保存的行并将查找到较晚,结果如下:

代码语言:javascript
复制
C:\Users\Computer\Desktop\Not_Compressed_Folder\Password Managment System\1.0h>init -sh
[DEBUG]: File-Length -> 3
[DEBUG]: label0 string0
[DEBUG]: label0 string0label1   string1ª↕
[DEBUG]: label0 string0label1   string1label2   string2

为什么每次都要重新开始?我想是关于光标的,每次第一次重新开始的时候,它都会跳回起点。我还是不知道怎么修。任何形式的帮助都会很高兴的。耽误您时间,实在对不起。

EN

回答 1

Stack Overflow用户

发布于 2022-04-02 09:08:58

这仅仅是因为您从未删除缓冲区的内容,并且不断地递增k。因此,解决这个问题的一种方法是在读取完一行之后将‘0’设置为‘0’,然后将k设置为0:

代码语言:javascript
复制
while(len > 0){
    while(read(fd, &c, 1) == 1){
        if(c == '\n')
            buffer[k] = '\0';
            break;
        buffer[k++] = c;
    }
    printf("[DEBUG]: %s\n", buffer);
    k = 0;
    len--;
}

因为我没有完整的代码,所以我还没有试过这一点,如果它不起作用,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71715278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档