gpt4 book ai didi

c - 使用 *varname 定义字符串时,Sprintf 失败,传递给 loadrunner 中函数的参数无效

转载 作者:行者123 更新时间:2023-11-30 18:39:09 25 4
gpt4 key购买 nike

第一个版本:(有效)

//Using sprintf
int index = 56;
char filename[64], * suffix = "txt";
sprintf(filename, "log_%d.%s", index, suffix);
lr_output_message ("The new file name is %s", filename);
//This works

第二个版本:(不起作用)

 //Using sprintf 
int index = 56;
char *filename, * suffix = "txt";
sprintf(filename, "log_%d.%s", index, suffix);
lr_output_message ("The new file name is %s", filename);
//Fails with invalid parameter passed to function

最佳答案

  • 您的第一个版本(是正确的并且)可以工作,因为为 filename 分配了(足够的)内存,它是一个 char数组。

    char filename[64]. //....
  • 您的第二个版本(不正确,)不起作用,因为没有为您定义为指针的filename分配内存。

    char *filename,//...

这不会自动为指针分配内存。

换句话说,指针没有指向任何有效内存地址。因此,尝试访问指针指向的内存是无效的,并调用 undefined behaviour .

解决方案:在使用指针之前需要为其分配内存。您可以使用malloc()和系列函数为指针分配内存。

此外,您分配内存并使用完毕。您必须使用free()释放分配的内存

关于c - 使用 *varname 定义字符串时,Sprintf 失败,传递给 loadrunner 中函数的参数无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30839195/

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