我有一个项目,用户可以通过在菜单中选择文件来打开文件。 我有两段几乎相同的代码,但其中一段有效,而另一段则无效: 有效的方法是通过 gedit 打开文本文件(“chemin”包含文件路径):
char buf[200];
snprintf(buf,sizeof(buf),"gedit %s",chemin);
system(buf);
这个在我的代码中运行时不起作用,但在代码之外运行时却起作用(使用 eog 打开 .jpg 文件 - 也尝试过 xdg,但没有任何改进):
snprintf(buf,sizeof(buf),"eog %s",chemin);
system(buf);
是否有更可靠的方法从 unix 命令行打开 .jpg 文件?或者我忘记了什么? TIA
更新
看来缓冲区只将前 7 个字符打印到命令行,即:
我的文件路径:./FICHIER_PROJET/basededonnee/basedeDonneefichier/IMG_RGB/21.jpg
命令行打印的内容:eog ./FI
这只发生在这些 .jpg 文件中
最佳答案
问题可能来自于字符“\0”的位置错误,请尝试以下操作:
strncpy(buf, "eog ", 4);
strncat(buf, chemin, sizeof(chemin));
buf[4+sizeof(chemin)] = '\0';
if(system(buf) == -1){
perror("Error with the system call ");
exit(-1);
}
关于c - C中通过unix系统命令打开图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41826995/