Sam*_*tac -1 c++ arrays string char
我正在使用memcpy将特定数量的字符从char数组复制到char*.但是当我读到char*时,最终总是垃圾.
我正在使用libssh2 lib向我的raspberry pi发送命令并接收输出.
libssh2_channel_read将返回输出的字符数,int x输出文本将在char buffer[32].
我正在使用的代码:
char buffer[32];
int x = libssh2_channel_read(channel, buffer, sizeof(buffer));
char * output = (char *)malloc(sizeof(char)*x);
memcpy(output, buffer, x-2); // x - 2 because of "\r\n"
libssh2_channel_free(channel);
channel = NULL;
cout << output << endl;
Run Code Online (Sandbox Code Playgroud)
输出示例:
0??²²²²
Run Code Online (Sandbox Code Playgroud)
我只想要 0
欢迎使用C++.
您正在复制您关心的值,但不会复制终止的'\ 0'字符.假设x有效(即:x> 3且x <= sizeof(缓冲区)),您可以说:
output[x - 2] = '\0';
Run Code Online (Sandbox Code Playgroud)
打电话给memcpy()你后,你应该得到你所期望的.
但是:当你处理这样的通信和缓冲时,你需要小心并检查所有内容.
| 归档时间: |
|
| 查看次数: |
411 次 |
| 最近记录: |