1
私はzenity --file-selection
からの出力を解析することで、ファイルを開こうとしていますが、私は、ファイルを開いて決して問題を抱えていると私はエラー番号からError: 2 (No such file or directory)
を取得し、存在して開いているファイルはできません。しかし、単にprintf("%s", file_to_open);
の出力をコピーして引用符で囲み、fopen
に渡すと、file_to_open
自体が動作しなくても、意図したとおりに動作します。私はLinux上で動作しているので、 '\'に問題はないはずです。のfopenはI入力しない限り、文字列
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
char * select_file(void)
{
static char path[1024];
memset(path, 0, sizeof(path));
FILE *fp = popen("zenity --file-selection --title=\"Choose Gameboy Rom\"", "r");
if(fp == NULL)
{
printf("Failed to run command, make sure you have zenity installed!\n");
exit(EXIT_FAILURE);
}
fgets(path, sizeof(path), fp);
pclose(fp);
return path;
}
int main(void)
{
FILE * fp;
char file_to_open[1024];
strcpy(file_to_open, select_file());
printf("%s", file_to_open);
fp = fopen(file_to_open, "r");
if(fp == NULL)
{
printf("Error: %d (%s)\n", errno, strerror(errno));
exit(EXIT_FAILURE);
}
fclose(fp);
return 0;
}
あなたはpath
の端から改行を削除する必要が
'fgets()'によって返される文字列の最後に改行があります。実際のファイル名はおそらくありません。 – Barmar