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

发布于 2024-11-07 13:56:04 字数 307 浏览 0 评论 0原文

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

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);

I am trying to call an interface function and print out the resulting values. The function prototype contains pointers to character string as arguments. When I print out the resulting values I receive some strange symbols. Is my below approach correct?

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);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

围归者 2024-11-14 13:56:04

你的 printf 不太安全。它应该是:

printf("%s", b);  //corrected - safe!

在 C++ 中,您还可以使用 std::cout 作为:

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

确保 b 是一个以 null 结尾的 c 字符串,否则它将打印垃圾并且可能会使你的程序崩溃。空终止字符串意味着它必须以 \0 结尾。像这样的东西:

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

Your printf is not that safe. It should be :

printf("%s", b);  //corrected - safe!

In C++, you can also use std::cout as:

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

Make sure that b is a null-terminated c-string, otherwise it wil print garbage and may crash your program. Null-terminated string means it must end with \0. Something like this:

b[slen] = '\0'; //you may have to do this explicitly!
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文