我正在尝试调用接口函数并打印出结果值。函数原型包含指向字符串作为参数的指针。当我打印出结果值时,我会收到一些奇怪的符号。我的下面的方法是否正确?
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);
答案 0 :(得分:1)
你的printf不安全。它应该是:
printf("%s", b); //corrected - safe!
在C ++中,您还可以将std::cout
用作:
std::cout << b; //its simpler - must include<iostream>
确保b
是一个以空字符结尾的c字符串,否则会打印垃圾并可能导致程序崩溃。以空值终止的字符串表示它必须以\0
结尾。像这样:
b[slen] = '\0'; //you may have to do this explicitly!