我正在尝试将我的Web应用程序编译为C语言中的本机桌面应用程序。但是我在使用C语言中抓取文件路径时遇到了一些麻烦。
在PyGTK中,我会使用......
import webkit, pygtk, gtk, os
path=os.getcwd()
print path
web_view.open("file://" + path + "/index.html")
但是我不确定我是在寻找错误的地方还是在寻找什么,但是当我搜索Google时,我无法找到如何在C中获取我想要使用的文件路径此
gchar* uri = (gchar*) (argc > 1 ? argv[1] : "file://" + path + "app/index.html");
而不是像这样奇怪的方式链接到它......
gchar* uri = (gchar*) (argc > 1 ? argv[1] : "file://" + /home/michael/Desktop/kodeWeave/linux/app/index.html");
webkit_web_view_open (web_view, uri);
这是我的完整项目(如果有帮助的话)。
#include <stdio.h>
#include <string.h>
#include <gtk/gtk.h>
#include <webkit/webkit.h>
static WebKitWebView* web_view;
void on_window_destroy (GtkObject *object, gpointer user_data) {
gtk_main_quit();
}
int main (int argc, char *argv[]) {
GtkBuilder *builder;
GtkWidget *window;
GtkWidget *scrolled_window;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "browser.xml", NULL);
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
scrolled_window = GTK_WIDGET (gtk_builder_get_object (builder, "scrolledwindow1"));
g_signal_connect (G_OBJECT (window), "delete-event", gtk_main_quit, NULL);
gtk_window_set_title(GTK_WINDOW(window), "kodeWeave");
web_view = WEBKIT_WEB_VIEW (webkit_web_view_new());
gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (web_view));
gtk_builder_connect_signals (builder, NULL);
g_object_unref (G_OBJECT (builder));
gchar* uri = (gchar*) (argc > 1 ? argv[1] : "file:///home/michael/Desktop/kodeWeave/linux/app/index.html");
webkit_web_view_open (web_view, uri);
gtk_widget_grab_focus (GTK_WIDGET (web_view));
gtk_widget_show_all (window);
gtk_main();
return 0;
}
答案 0 :(得分:1)
你不能使用+
运算符来连接c中的字符串,你可能需要snprintf
,首先你需要一个足够大的缓冲区,可能是常量PATH_MAX
会工作,它在limits.h
中定义,例如
char uri[PATH_MAX];
char cwd[PATH_MAX];
getcwd(cwd, sizeof(cwd));
if (argc > 1)
snprintf(uri, sizeof(uri), "%s", argv[1]);
else
snprintf(uri, sizeof(uri), "file://%s/index.html", cwd);
/* ^ %s specifier for ^ this char pointer */
+
运算符可以处理您的操作数,但是以不同的方式,它只执行指针运算,因为操作数是指针。