在长的二进制序列中找到三个最相似的匹配

时间:2017-06-05 17:38:33

标签: c

我是C编程的新手,有一个我无法解决的问题 从包含大量信息的文件,结构如
“id”\ t 2048次'0'或'1' 例如:

int procura(int *v, int *c, int tam){
int i,j,t;
FILE *fp;
fp=fopen("fich.txt","r");
v=(int*)malloc(sizeof(int));
c=(int*)malloc(sizeof(int));
while(!feof(fp)){
    fscanf(fp,"%d",&v);
}
t = sizeof(v)/sizeof(*v);
for(i=0;i<tam;i++){
    for(j=0;j<t;j++){
        if(c[i]==v[j])
            return 1;
        else
            return 0;
    }
}

我将从用户引入的新序列中找到3个最相似的元素,这些元素具有与用户引入的序列相同的大小。

E.g。用户介绍的序列,010101,程序必须显示如

  • n1 = 010101
  • n2 = 010100
  • n3 = 010010

这些是来自每行中所有2048'0''1'的3个最相似的序列。

我希望问题得到很好的解释。 我在下面有这个代码,但它没有解决问题。

任何人都可以帮助我吗?

感谢。

int main(){
int *v, *c;
int i,tam,a;
printf("array size\n");
scanf("%d",&tam);
c=(int*)malloc(tam*sizeof(int));
printf("Seq\n");
for(i=0;i<tam;i++){
    scanf("%d",&c[i]);
}
printf("%d",procura(v,c, tam));

return 0;

}

EXECUTE format('SELECT $1 FROM users 
WHERE name=''name''')
USING 'user_id';

}

1 个答案:

答案 0 :(得分:3)

一些事情:

  • v=(int*)malloc(sizeof(int));
    c=(int*)malloc(sizeof(int));
    

    这些会覆盖指针,因此您会丢失原始vc

  • sizeof(v)/sizeof是语法错误

  • 获取带有sizeof的指针大小会返回指针的大小,而不是指向

  • 的大小
  • 您重新分配上面的vc会使这些变量只指向 int的内存,然后循环遍历{ {1}}元素意味着你超出了记忆的界限

  • 使用tam将指针传递给指针

  • 阅读Why is “while ( !feof (file) )” always wrong?

  • 没有错误检查,如果您无法打开文件会怎样?

  • 您的功能会在第一次fscanf(fp,"%d",&v)检查后立即返回,并且无条件返回

可能还有更多。