Делаю поддержку drag-n-drop в своем просмотрщике и столкнулся чуть ли не с чудесами какими-то. Опыта разрулить не хватает.
По идее, tmps содержит указатель на данные, перетащенные в окно. В данном случае это строка из имен файлов, разделенных через «\n». Следующий код:
g_printf("%s \n", tmps);
печатает:
file:///home/tim/av1.png
Т.е. налицо 2 перевода строки. 1-й потому что является разделителем, а второй из g_printf. Это все понятно. Вроде так и должно быть. Дальше:
fns = g_strsplit(tmps,"\n",-1);
g_printf("%s \n", fns[0]);
Печатает вообще непонятную строку:
ile:///home/tim/av1.png
Т.е. вместо первой буквы «f» печатается пробел. Причем, пробел из g_printf, видимо. Потому что если его оттуда убрать, то строка печатается нормально. Ну суть даже почти не в этом. А в том, что файл все-равно не открывается. Т.е. видимо там то ли управляющие последовательности какие-то, то ли просто мусор. И возникает это все именно после g_strsplit. Не понимаю.
На всякий случай, объвление переменных, а то непонятно, наверное:
gchar *tmps;
gchar **fns;