2014-11-06 37 views
0

我输入了下面的代码来实现搜索功能只。我的想法是在函数搜索中创建一个名为'temp_fp'的FILE变量'fp'的副本。我的问题是,当我增加temp_fp时,fp也会增加。我一直花费数小时才能找到错误。难道不可能创建一个FILE结构的副本吗?请帮帮我。我试图创建一个程序来搜索和替换文本文件中的文字使用c

#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; 
     } 
    } 
} 
+0

速战速决,为你的代码是调用fgetpos标记当前位置,并呼吁FSEEK跳回至刻度。只是谷歌fgetpos和fseek。 – 2014-11-06 16:39:44

+0

这段代码不会编译。 'fopen(“search.txt”,“r);'似乎是..。丢失的东西 – WhozCraig 2014-11-06 16:51:37

+0

@Peter Li,我想创建程序时不使用许多标准函数,反正我会试试看,谢谢 – famempm 2014-11-06 17:00:22

回答

0

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

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

+0

I已经阅读了该URL中的所有内容,但仍然无法找到问题的解决方案。是否有将指针变量复制到另一个?现在我觉得我所了解到的指针都是错误的.. – famempm 2014-11-06 16:58:40

+0

如果您想要合作py数据本身,而不是一个指针引用,然后不要使它成为一个指针。只需使用'FILE temp_fp;'我没有检查这是否是你想要的。这似乎是一个明显的错误。你可能实际上想要使用指针引用'&fp'。 – charles 2014-11-06 19:09:44

相关问题