J'ai un problème quand je recharge un fichier enregistré grace à ma fonction "OnSave"
Le fichier m'affiche des caractères illisibles. Apparement j'ai un problème avec le buffer :



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
void OnSave(GtkWidget* widget, gpointer data)
{
  GtkWidget *pSave=NULL;
  pSave = gtk_file_chooser_dialog_new ("Save File as ...",
						GTK_WINDOW(data),
  				      GTK_FILE_CHOOSER_ACTION_SAVE,
  				      GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
  				      GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
  				      NULL);
  gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (pSave), TRUE);
  gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (pSave), "Untitled.");
 
 
 
  if (gtk_dialog_run (GTK_DIALOG (pSave)) == GTK_RESPONSE_ACCEPT)
  {
    gchar *filename;
    filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (pSave));
	/* save the output */
 
    FILE* fichier = NULL;
    long lsize;
    char save [2048];
    char buffer[256];
    fichier = fopen(filename, "w");
 
    if (fichier != NULL)
    {
 
    	time_t timestamp = time(NULL);
 
	fseek (fichier , 0 , SEEK_END);
  	lsize = ftell (fichier);  
 
	fread( save, 1, lsize, fichier);
    	strftime(buffer, sizeof(buffer), "%A %d %B %Y - %X.", localtime(&timestamp));
 
	fputs("Fichier enregistré le ",fichier);
	fputs(buffer,fichier);
	fputs("\nHistorique de votre référence\n\n\n",fichier);
        fputs(save, fichier);
        fclose(fichier);
    }
 
    free (buffer);
    free (save);
    g_free (filename);
  }
 
  gtk_widget_destroy (pSave);
}