hello everyone, i am facing error with concating strings, filename and filepath. Actually,the problem is I want to get filename from filepath.
So, that's the algorithm I have developed:
Find the last occurrence of "/" from beginning of string, filepath or first occurrence from end of string.
Then get each character from string by filepath[i] and concating it with filename using for loop.
The code is this:
Code:
void save_activated(GtkWidget *widget, GtkWindow *parent)
{
GtkWidget *dialog;
GtkTextIter start_iter, end_iter;
GtkTextBuffer *buffer;
GtkSourceLanguageManager *languagemanager = gtk_source_language_manager_new();
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(txtinput[gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook))]));
dialog = gtk_file_chooser_dialog_new("Save File", parent, GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL,GTK_STOCK_SAVE,GTK_RESPONSE_ACCEPT,NULL);
if (gtk_dialog_run(GTK_DIALOG(dialog))== GTK_RESPONSE_ACCEPT)
{
char *filepath,*text;
gchar *filename;
int i;
gssize length = -1;
filepath = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
gtk_text_buffer_get_end_iter(buffer,&end_iter);
gtk_text_buffer_get_start_iter(buffer,&start_iter);
text = gtk_text_buffer_get_text(buffer,&start_iter,&end_iter,FALSE);
g_file_set_contents(filepath,text,length,NULL);
GtkSourceLanguage *language = gtk_source_language_manager_guess_language(languagemanager,filepath,NULL);
for(i = rfind(filepath,"/")+1;i<strlen(filepath)-1;i++)
{
filename = g_strconcat("%s%c",filename,filepath[i]);
}
gtk_notebook_set_tab_label_text(GTK_NOTEBOOK(notebook),scrollwin[gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook))],filename);
gtk_source_buffer_set_language(GTK_SOURCE_BUFFER(buffer),language);
g_free(filepath);
g_free(text);
}
gtk_widget_destroy(dialog);
}
int strlen(char string[])
{
char *p;
p = &string[0];
int i = 0;
while (*p++ != 0)
i++;
return i;
}
int rfind(char *string, char *c)
{
int index=0;
char *p;
p = &string[strlen(string)-1];
index = strlen(string)-1;
while (*p++)
{
if (*p == *c)
break;
index--;
}
return index;
}
As, you can see, I want to get the file name and make it the text of label of the current page of notebook. But whenever I try to save file, I get following error in terminal.
Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text() and some unusaul string containing unusual symbols become the label text of the notebook page.
Please Help!! Solve this problem.
Thanks in advance