C语言 双指针在数组中被神秘地修改



你好,我有一个填充由单词组成的 2D 数组的函数。我想简单地返回我用来输入函数的指针的值,但由于某种原因,指针现在指向其他东西,奇怪的是。我想知道如何解决这个问题。也无法进行指针运算来解决此问题吗?(这不是我想做的,我想看看问题是什么并以这种方式解决它,但无论如何很高兴知道(。所以它应该是一个 500 x 5 的数组,即使我将字符串分配给"dictPointer[i]",我认为它应该代表"*dictPointer"而不是"dictPointer",似乎我不应该有问题。我需要这样,因为我想打印从初始指针值开始的单词。另请注意,dictPointer 是指向指针( **dictPointer( 的指针

char** readAndPopulateArray(FILE *f, char *fileName, char **dictPointer, int x ) { // x represents the number of words 
    // point is the word pointer
    int i = 0;
    char tempStr[80];
    char ch;
    f = fopen(fileName, "r");
    if ( f == NULL ) {
        printf("Cannot open %s. Verify it's in the right locationn", fileName);
    }
    while (fscanf(f, "%s", tempStr) == 1 ) {
        if( strlen(tempStr) == 4 ) {
            if(i == 0 ) {
                printf("Entering dictpointer points to %pn", *dictPointer);
            }
            dictPointer[i] = tempStr;
                        if ( i == 499 ) {
                printf("Exiting dictPointer points to %pn", *dictPointer);
            }
        }
        i++;
    }
    return dictPointer;
}

以下是我如何为矩阵调用 malloc:

char** makeStringWordArray(int x, int letters ) { // x represents number of words, function stores one character each per word
    // letters represents number of letters in each word
    char *hold;
    int i, j = 0;
    char **dict = (char **)(malloc(x * sizeof(char*)) );
    for (i = 0; i<x; i++ ) {
            dict[i] = (char*)(malloc(letters*sizeof(char) + 1 ) );
        }
    return dict;
}

您将每个dictPointer[i]分配给同一个指针tempStr。 然后tempStr的寿命在readAndPopulateArray结束时结束,使dictPointer[i]无效。

也许你的意思是

strcpy(dictPointer[i], tempStr);

相关内容

  • 没有找到相关文章

最新更新