Ragged Arrays и For Loop ошибки - PullRequest
0 голосов
/ 17 мая 2011

Я получаю неверную ошибку доступа в середине цикла for, всегда, когда i = 4. Кто-нибудь знает причину этого? Это работает, пока я = 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 Ответ

1 голос
/ 17 мая 2011

Мне кажется, что это так:

 m=strlen(*list);

должно быть:

 m=strlen(list[i]);

А это:

*list++;

не должно быть там вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...