【问题标题】:Ragged Arrays and For Loop errors参差不齐的数组和 For 循环错误
【发布时间】:2011-08-26 23:24:53
【问题描述】:

我在 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;
}

【问题讨论】:

  • 程序的目的是读取字符串列表,并将用户的输入与字符串进行比较。重叠最多的字符串将被“推荐”给用户。
  • 是的,但我似乎无法找到错误发生的位置,因为我不完全理解错误。
  • 添加一些断点,一步步调试,这样就可以知道发生在哪一行了

标签: c arrays pointers loops jagged-arrays


【解决方案1】:

在我看来是这样的:

 m=strlen(*list);

应该是:

 m=strlen(list[i]);

还有这个:

*list++;

根本不应该在那里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-02
    • 2013-08-18
    • 2021-07-18
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    相关资源
    最近更新 更多