c - 我正在尝试创建一个程序来使用 c 搜索和替换文本文件中的单词

标签 c

我输入以下代码只是为了实现搜索功能。我的想法是在函数搜索中创建 FILE 变量“fp”的副本,名称为“temp_fp”。我的问题是,当我增加 temp_fp 时,fp 也会增加。我花了几个小时才找到错误。是否可以创建 FILE 结构的副本?请帮助我。

#include <stdio.h>

int main(void)
{
    FILE *source;
    char key[100];
    source = fopen("search.txt", "r);
    if (source == NULL)
    {
        printf("null");
        return 0;
    }
//read keyword
    scanf("%s", key);
    fsearch(source, key);
    fclose(source);
}

int fsearch(FILE  fp, char *key)
{
    char ch, *temp;
    FILE *temp_fp;
    while (!feof(fp))
    {
        temp = key;
        ch = fgetc(fp);
        temp_fp = fp;
        while ((ch == *temp))
        {
                        printf("ch=%c\tkey=%c\n", ch, *temp);
            ch = fgetc(temp_fp);
            temp++;
            if (*temp == '\0')
                return fp;
        }
    }
}

最佳答案

您正在创建一个指针 temp_fp,然后将该指针设置为 fp。这实际上并不是复制 fp,而是指向内存中与原始文件相同的位置。

此链接可能对您有用:https://www.cs.bu.edu/teaching/c/file-io/intro/

关于c - 我正在尝试创建一个程序来使用 c 搜索和替换文本文件中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26784472/

相关文章:

计算 malloc() 可以完成的最大分配后的困惑

c - XML解析编译错误

c - 如何从确定的位置检查一组位是否为 0?

iphone - 如何存储/检索对象的 NSMutableArray?

c - 有什么办法可以在不使用三元运算符的情况下减少 IF 语句吗?

c - 在C程序中请求管理员权限?

c - 在 C 中使用 char 数组作为二维数组

c - MongoDB BSON OID 失败

c - 有什么方法可以跳过for条件语句中的&&?

c - 在 C 编辑器中自动定义...为什么?