我是 C 编程的新手,有一个我无法解决的问题。
来自包含大量信息的文件,结构如下
"id"\t 2048 次 '0' 或 '1'
例如:
81283 \t 0101011010.....0110
我必须从用户引入的新序列中找到与用户引入的序列大小相同的 3 个最相似的元素。
例如用户输入的序列,010101,程序必须显示如下
- n1= 010101
- n2= 010100
- n3=010010
那些是每行中所有 2048 个'0''1'中最相似的 3 个序列。
我希望问题得到很好的解释。 我有下面这段代码,但它没有解决问题。
谁能帮帮我?
谢谢。
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;
}
}
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;
最佳答案
一些事情:
-
v=(int*)malloc(sizeof(int)); c=(int*)malloc(sizeof(int));
这些覆盖了指针,所以你失去了原来的
v
和c
. sizeof(v)/sizeof
是语法错误使用
sizeof
获取指针的大小返回指针的大小,而不是它指向的内容您对
v
的重新分配和c
上面使这些变量指向内存的只有一个单个int
, 然后你遍历tam
表示你超出内存范围的元素与
fscanf(fp,"%d",&v)
你将指针传递给指针没有错误检查,如果无法打开文件会怎样?
您的函数将在第一个
c[i]==v[j]
之后立即返回检查,它将无条件返回
可能还有更多。
关于c - 在长二进制序列中找到与给定短二进制序列最相似的三个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44374573/