Bonjour je code en C et j’utilise Microsoft Visual C++.
Mon problème est le suivant, je dois copier un fichier qui n’est pas au format texte (donc ouverture en binaire). Puis je copie son contenu dans un nouveau fichier cette fois-ci au format texte. Voici mon code :

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define TEMP 60

//-----------DEBUT-PROGRAMME------------//
void main (void)
{
	//Declaration(s) de la(des) variable(s)
	char daterecherche[6], nomfic_srcPCA[TEMP];

	FILE *stream;
	int list[50];
	int i, numread, numwritten;


	//Demande du parametre "daterecherche"
	printf("Veuillez saisir la date de la recherche pour les prelevement\n");
	fgets(daterecherche, 7, stdin); //date au format JJMMAA !

	strncpy (nomfic_srcPCA, "Fichier_cherche-", TEMP);
	strncat (nomfic_srcPCA, daterecherche, TEMP);


	if(nomfic_srcPCA)
	{
		printf("Fichier trouve\n");

		//ecriture dans le nouveau fichier
		if( (stream = fopen("Nouveau_Fichier.txt", "wb")) != NULL)
		{
			//JE VEUX QUE MON ECRITURE DANS list
			//SOIT AU FORMAT TEXTE => en ASCII
			for (i=0; i<50; i++)
			{
				list[i] = (char)(list[i]);
			}
			//Dans fwrite je ne met que 50 juste pour mon essai
			numwritten = fwrite (list, sizeof(char), 50, stream);
			printf("Wrote %d items\n", numwritten);
			fclose(stream);
		}
		else
		{
			printf("Problem opening the file\n");
		}

		//affichage du contenu à l’ecran
		if( (stream = fopen("nomfic_srcPCA", "rb")) != NULL)
		{
			numread = fread(list, sizeof(char), 50, stream);
			printf("Number of items read = %d\n", numread);
			printf("Contents of buffer = %.50s\n", list);
			fclose(stream);
		}
		else
		{
			printf("File could not be opened\n");
		}
	}
	else
	{
		printf("Erreur fichier\n");
	}
}
//-----------FIN-PROGRAMME------------//
Le contenu de mon fichier d’essai est le suivant :
« test de verification
test du saut de ligne
ca marche » (Bon d’accord ce n’est pas très évolué)

Mais le résultat du programme est un fichier avec des caractères qui sont illisible. Ça vient surement du fait que je suis en binaire.
Je pense que mon souci vient au moment ou je dois écrire dans le fichier, car lorsque j’affiche le contenu du fichier a l’écran je retrouve bien mon texte.

Quelqu’un pourrait-il m’aider ?
J’avais vu dans un post qu’il y avait la fonction « strtol » j’ai essayé d’utiliser cette fonction avec les descriptif du man mais j’avais une erreur au niveau du format du paramètre. Je me casse la tête depuis hier. Je n’arrive pas à avoir un affichage correct pour ré-exploiter le fichier. http://man.developpez.com/man3/strtol.3.php

Je pense que je devrais transformer du binaire en caractère, mais je ne sais pas trop comment m’y prendre. Merci d’avance pour vos aides.