Salve ho deciso di imparare la libreria gtk nel tempo perso, ho un dubbio su come devo richiamare le mie funzioni in base agli eventi dell'interfaccia cioè ho scritto questo codice:
codice:
#include <gtk/gtk.h>#include <stdio.h>
#include <stdlib.h>




char* apri (GtkWidget *widget)
{
    char *s=(char*)malloc(sizeof(char));
    int c=0;;
    int i=0;
    GtkWidget *filechooserdialog = gtk_file_chooser_dialog_new("FileChooserDialog", NULL, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL);
    gtk_dialog_run(GTK_DIALOG(filechooserdialog));


    FILE *f;
    f=fopen(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(filechooserdialog)),"rt");
    gtk_widget_destroy(filechooserdialog);
    if (f==NULL)
        g_print("non ho aperto il file");
    for(;;){
        
        if((c=fgetc(f)) != EOF){
            s[i]=c;
            i++;
            s=(char *)realloc(s,(1+i)*sizeof(char));
        }else{
        
        break;
        }
    s[i]='\0';
    }
     
    return s;
}


int main (int   argc,char *argv[])
{
  GtkBuilder *builder;
  GObject *window;
  GObject *button;


  gtk_init (&argc, &argv);
    
  /* Construct a GtkBuilder instance and load our UI description */
  builder = gtk_builder_new ();
  gtk_builder_add_from_file (builder, "builder.ui", NULL);


  /* Connect signal handlers to the constructed widgets. */
  window = gtk_builder_get_object (builder, "window1");
  g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);


  button = gtk_builder_get_object (builder, "button1");
  g_signal_connect (button, "clicked", G_CALLBACK (apri), NULL);
    
  button = gtk_builder_get_object (builder, "button2");
  g_signal_connect (button, "clicked", G_CALLBACK (gtk_main_quit), NULL);


  


  gtk_main ();


  return 0;
}
Funziona tutto alla perfezione però non riesco a capire bene come in che modo posso chiamare le mie funzioni , e come riuscire a prendere il valore restituito.
Cioè in questo caso chiamo la funzione apri nel momento in cui clicco sul pulsante "button1" ma in questo modo non so come usare il valore restituito.
Ho un po di confusione sulla utilizzo della libreria e online ci sono poche risorse che chiariscono questa cosa. Potete darmi una mano?
Grazie