如何将calloc创建的内存缓冲区的指针传递给子函数?

时间:2014-04-06 10:39:09

标签: string memory-management

这是我的代码: 我必须为字符串Str1动态创建一些内存,并以递归方式将其指针传递给另外两个函数。代码编译但是当它进入Function2时会产生一个异常,说不能写c [i],坏指针? (即它不写入Str1) 我做错了什么?

void Function1(void)
{
    char *Str1;
    Str1 = calloc(25, sizeof(char));
    pFileIn  = fopen("in.txt", "r");
    pFileOut = fopen("out.txt", "w+");
    if (pFileIn==NULL) printf("Error opening file");
    else
    {
        while (Function2(pFileIn, Str1))
        {
            if (! Function3(pFileOut, Str1))
            {
              fseek(pFileOut, 0, SEEK_END);
              fprintf(pFileOut, "%s", Str1);
              rewind(pFileOut);
            }
        }
        fclose(pFileIn);
        fclose(pFileOut);
}

int Function2(FILE* f, char * c)
{
  int i=0;
  do
  {
      c[i] = fgetc(f);
     if (c[i]==EOF)
        return FALSE;
    } while (c[i++]!='\n');
  c[i] = '\0';
  return TRUE;
}
int Function3(FILE* f, char * c)
{
  char *Str2;
    Str2 = calloc(25, sizeof(char));
  while (Function2(f, Str2))
  {
    if (strcmp(c, Str2)==0)
      return TRUE;
  }

  rewind(f);
  return FALSE;
}

0 个答案:

没有答案