微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

同一指针的值根据我在何处调用而不同

如何解决同一指针的值根据我在何处调用而不同

我的程序正在使用主函数提示用户选择要使用的函数,然后将引用发送到指向其所选函数的char double指针。在函数中,我为字符串数动态分配内存。然后,为每个字符串分配内存,具体取决于传入的字符串长度。

void readFile(char *** fileAsArray){
   /* file name found,file opened,set to FILE *input */

   int numWords = 0;
   *fileAsArray = malloc(5000 * sizeof(**fileAsArray));
   while(fgets(line,sizeof(line),input){
      char *word = strtok(line," \n");
      while(word){
         int wordSize = strlen(word);
         int i;
         (*fileAsArray)[numWords] = malloc(wordSize * sizeof((**fileAsArray)[numWords]));
         (*fileAsArray)[numWords] = word;
         printf("%s",(*fileAsArray)[numWords]); // CORRECT WHEN CALLED HERE
         numWords++;
         word = strtok(NULL," \n");
      }
   }
      printf("%s",(*fileAsArray)[0]); //INCORRECT WHEN CALLED HERE??
}

解决方法

         (*fileAsArray)[numWords] = malloc(wordSize * sizeof((**fileAsArray)[numWords]));
         (*fileAsArray)[numWords] = word;

正在用word覆盖指向已分配缓冲区的指针,并导致内存泄漏。

strcpy()应该用于复制字符串。

您还忘记分配以终止空字符。

该部分应为:

         (*fileAsArray)[numWords] = malloc((wordSize + 1) * sizeof((**fileAsArray)[numWords]));
         strcpy((*fileAsArray)[numWords],word);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。