c - 将参数传递给函数(int 到 size_t)

标签 c parameters

在函数 writeDmpFile 中,我正在调用 writeFile

请查看代码和注释。

我的问题是大小。在 writeDmpFile 中,我看到它是 380316。我尝试将它传递给 writeFile。

但是当我走到这里时,我得到了非常大的数字(3832907636190596508)。

我做错了什么。我预计 380316 会通过。

int writeFile(char *name,  unsigned char *buff, size_t *size,const char *dir )
{
  FILE * pFile;
  chdir (dir);
  pFile = fopen ( name, "wb");
  //(gdb) print *size
  //$5 = 3832907636190596508
  fwrite (buff , sizeof(unsigned char), *size, pFile);
  fclose (pFile);

  return 1;
}
int writeDmpFile(GTree *tree, char *filename)
{
  char dmpfilename[32];

  dmpfilename[0] ='\0';
  dmpParams_t params;
  params.buff[0]   ='\0';
  int size =0;
  params.size=&size ;
  g_tree_foreach(tree, (GTraverseFunc)writeDmpFileLine, &params);
  sprintf (dmpfilename, "InstrumentList_FULL.csv_%.*s", 15, filename);
  //here (gdb) print size
  //$1 = 380316
  writeFile(dmpfilename,  ( unsigned char *)params.buff, ( size_t *)&size , dmpdir);//(size_t *)params.size, dmpdir);
}

最佳答案

( size_t *)&size

这很糟糕,因为 size_tint 是具有不同表示的不同类型。 size_t 是无符号整数类型的别名,通常是 unsigned long。在这里,您应该将 size 声明为 size_t 变量。

关于c - 将参数传递给函数(int 到 size_t),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22490417/

相关文章:

带有函数参数的Javascript到innerhtml中

c# - 在 C# 中是否有任何理由使用枚举参数而不是位标志?

ios - Alamofire 调用中的额外参数 'method'

C#泛型方法和动态类型问题

C取消引用指向字符数组的指针

c++ - X宏重新定义

c - 为什么编译器会给我错误未使用的变量n?

c++ - 使用 Arduino IDE 编程是否适合商业产品?

将子字符串复制到 C 中字符串的开头

function - 用于定义/调用多参数函数的 ANTLR 语法