Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 打印在指向字符串的指针中获得的数据时出错_C++_C_Pointers_Dll_Printf - Fatal编程技术网

C++ 打印在指向字符串的指针中获得的数据时出错

C++ 打印在指向字符串的指针中获得的数据时出错,c++,c,pointers,dll,printf,C++,C,Pointers,Dll,Printf,我试图调用一个接口函数并打印出结果值。函数原型包含指向作为参数的字符串的指针。当我打印出结果值时,我收到一些奇怪的符号。我下面的方法正确吗 int interfacecall(char *a, char *b ...); char * a= "Testdata"; char b [4098]; result= interfacecall(a,b); //different value is returned in b via function implementation in a thi

我试图调用一个接口函数并打印出结果值。函数原型包含指向作为参数的字符串的指针。当我打印出结果值时,我收到一些奇怪的符号。我下面的方法正确吗

int interfacecall(char *a, char *b ...);

char * a= "Testdata";
char b [4098];

result= interfacecall(a,b);

//different value is returned in b via function implementation in a third party dll.

printf(b);

你的printf没有那么安全。应该是:

printf("%s", b);  //corrected - safe!
<>在C++中,也可以使用<代码> STD::CUT< /COD> AS:

std::cout << b; //its simpler - must include<iostream>

嗯,为此我们需要知道
interfacecall
实际上做了什么…interfacecall做了什么?另外,尝试
chara[]=“Testdata”
此外,
char*a=“literal”
已被弃用,请使用
const char*a=“literal”
char a[]=“literal”
@Xeo:您是否有一个引用,用于将字符串文字地址弃用分配给指向char的指针?或者你的意思是它在
C++
中被弃用了?我相信所有的
C++
编译器都会抱怨,如果你试图给
C
中的char(type
char*
)指针分配一个字符串文字(type
const char[]
),字符串文字的类型是
char[]
@pmg:Meh,忽略了lil
C
标签。。。那么,我的最后一条评论只适用于
C++
:)那么,您可以不使用格式字符串直接打印。这样做不太省钱,因为可以注入各种恶意代码。假设我分配一个大小为5000的数组。如果返回的数据最多只能填充2000个,并且我在4999处添加了一个空值,那么这会导致打印垃圾数据吗?@vij:在这种情况下,如果您不发布代码,我该如何帮助您?@vij:是的。从2001年到4998年都是垃圾!字符错误[4097];结果=callInterface(a,错误,…);错误[sizeof(error)-1]='\0';printf(错误);
b[slen] = '\0'; //you may have to do this explicitly!