gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 05:26:47 24 4
gpt4 key购买 nike

在函数 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com