C++使用管道调用cmd使用adb截图或者cat图片

问题遇到的现象和发生背景

c++使用管道读取安卓图片
或者使用adb shell screencap -p命令截图返回的图片经过断点调试返回的数据不全只有5个字符

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%

int execmd2(char* cmd, char* result) {
FILE* pipe = _popen(cmd, "r"); //打开管道,并执行命令
if (!pipe) {
return 0;
} //返回0表示运行失败

char ch;
int len = 0;
while ((ch = fgetc(pipe)) != EOF) {
    len = strlen(result);
    result[len] = ch;
    //result += ch;
    //strcpy(result,(char*)ch);
    printf("%c", ch);
}
_pclose(pipe);                                          //关闭管道 
return 1;                                                 //返回1表示运行成功 

}
int main(){
char result[1024 * 4] = "";
execmd2((char*)"adb shell cat sdcard/1.png", result);
}

运行结果及详细报错内容

execmd2命令获取的返回值result数据不完整明明使用cmd都可以查看到ascii的数据
但是使用管道读取只有五个字符 塒NG 就很奇怪是为什么呢

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

试过断点调试以及把fgetc改为fgets自定义读取大小都不可以五个字符以后的数据全为-1

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

可以获取到图片完整的字符集数据相当于java的byte类似使用java以及C#都尝试成功过不知道是因为那个地方出现的问题
还有就是不可以读取中文文本

adb shell cat sdcard/1.png
猜測:
如果 sdcard/1.png 裡面有特殊字符,可能會直接停止。
通過 adb 呼叫 cat 再傳回來,需要考慮以內容有沒有被編碼。
可以考慮用 adb pull 把檔案下載了再讀取。