打印出指向字符串的数据时出错

时间:2011-05-18 04:27:52

标签: 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 third party dll.

printf(b);

1 个答案:

答案 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!