c++ - 打印出字符串指针中获取的数据时出错

标签 c++ c pointers dll printf

我正在尝试调用接口(interface)函数并打印出结果值。函数原型(prototype)包含指向字符串的指针作为参数。当我打印出结果值时,我收到一些奇怪的符号。我的以下方法是否正确?

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::cout 用作:

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

确保 b 是一个以 null 结尾的 c 字符串,否则它会打印出垃圾信息并可能使您的程序崩溃。以 Null 结尾的字符串意味着它必须以 \0 结尾。像这样:

b[slen] = '\0'; //you may have to do this explicitly!

关于c++ - 打印出字符串指针中获取的数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6039867/

相关文章:

c - C 中的随机图

c - 在同一张表中总结不同类型有什么技巧吗?

c++ - 未定义 int64_t 的按位或?

c++ - 为什么 `std::move` 命名为 `std::move` ?

c++ - 使用 C++ 将图像写入 RabbitMQ 队列

C 程序 int 变量值在读取 Char 值后发生变化

c++ - 带参数调用类构造函数 - 'x' 中非类类型成员的请求

c - 如何在数组中存储数组元素

c - 为什么需要在链表中存储下一项指针

C 代码作为主函数和被调用函数的行为不同