衣衫褴褛的阵列和For Loop错误

时间:2011-05-17 05:56:28

标签: c arrays pointers loops jagged-arrays

我在for循环中间遇到错误的访问错误,总是在i = 4时。有人知道这个的原因吗?它工作直到i = 4,但我不明白为什么我不会在for循环的任何其他部分得到错误的访问错误。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>

    #define MAXF 51
    #define MAXFILE 200

int recommend(int fid, char *funcs[]){
int i;

for(i=0; i<fid; i++)
    *funcs++;
printf("\nRecommended Function: %s\n", *funcs);

return 0;
}


int overlap(char *list[], char name[], int n){
int over=0, fid=202, i, j, k, m;

for(i=0; i<n; i++){
    m=strlen(*list);
    int lap=0;
    for(j=0; j<(strlen(name)-1); j++){
        for(k=0; k<m; k++)
            if(list[i][k]==name[j]){
                lap+=1;
                break;
            }
    }

    if(over<lap){
        over=lap;
        fid=i;
    }

    *list++;
}

return fid;
}


int readfile(char *flist[], FILE *fptr){
char a[MAXF];
int size=0;

while(fscanf(fptr, "%s\n", a) != EOF){
    flist[size]=malloc(sizeof(char)*(1+strlen(a)));
    strcpy(flist[size++],a);
}

return size;
}


int main () {
int n, id;
char fnname[MAXF], filename[MAXF], *flist[MAXFILE];
FILE *fp;

printf("Name of network file: ");
gets(filename);
printf("\nFunction Name: ");
gets(fnname);

fp=fopen(filename, "r");

if(fp==NULL)
    printf("\nCould not open file.\n");
else {
    n=readfile(flist, fp);
    id=overlap(flist, fnname, n);
    recommend(id, flist);
}


return 0;
}

1 个答案:

答案 0 :(得分:1)

它看起来像是这样:

 m=strlen(*list);

应该是:

 m=strlen(list[i]);

而且:

*list++;

根本不应该存在。