Cast un nombre resultat de fgetc() en char
Fermé
noobuxtu
Messages postés
89
Date d'inscription
mardi 12 avril 2011
Statut
Membre
Dernière intervention
13 septembre 2011
-
Modifié par noobuxtu le 11/09/2011 à 21:50
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 sept. 2011 à 20:58
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 sept. 2011 à 20:58
A voir également:
- Cast un nombre resultat de fgetc() en char
- Chrome cast sur tv - Guide
- Lexer resultat - Télécharger - Sport
- Resultat foot - Télécharger - Vie quotidienne
- Nombre facile - Télécharger - Outils professionnels
- Resultat loto d'aujourd'hui rdc ✓ - Forum Excel
3 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
11 sept. 2011 à 23:28
11 sept. 2011 à 23:28
Bonjour,
Je ne suis pas sûr d'avoir bien compris le problème.
Pourrais-tu être plus précis en donnant un exemple ? (que contient le fichier par exemple, et que souhaites-tu que ta variable contienne ?)
Cdlt,
Je ne suis pas sûr d'avoir bien compris le problème.
Pourrais-tu être plus précis en donnant un exemple ? (que contient le fichier par exemple, et que souhaites-tu que ta variable contienne ?)
Cdlt,
noobuxtu
Messages postés
89
Date d'inscription
mardi 12 avril 2011
Statut
Membre
Dernière intervention
13 septembre 2011
1
Modifié par noobuxtu le 12/09/2011 à 18:04
Modifié par noobuxtu le 12/09/2011 à 18:04
Salut !!
Merci de t'interesser à mon cas :), le fichier contient en fait du texte crypté ( mon programme est un algo de cryptage très simple : une table ( aleatoire ) est generee pour chaque caracteres.
Chaque caracteres ( e.g a ) est remplacé par une combinaison de 6 chiffres, lettres ou caracteres speciaux ( par exemple 0xDf@%% pour la lettre "a" ).
L'encryption est parfaitement implémenté mais je ne peux pas decrypte ( ce sur quoi je trvail ... ).
Monprog --encrypt [filename] crypte le fichier demandé.
Maintenant, il faut que je cree l'option --decrypt. Pour cela je dois lire dans le fichier crypté et ma variable doit contenir 6 caracteres ( je dois lire le fichier 6 lettres par 6 lettres ) puis avec un série de teste déjà implémenté la chaine de 6 caracteres ( lettres ou autre ) seront transformé en vrai l"lettre" ou chiffre dans le fichier [filename].decrypt.
Donc ma chaine chaine_actuel[] doit contenir 6 caracteres de fgetc() ( tout les 6 caracteres represente un vrai caractere ( non crypté ).
Peut être existe-t-il une fonction permettant de lire chaine par chaine ( ou on pourrait spécifier le nombre de caractere de cette chaine ) ce qui contournerait le problème ...
Merci de t'interesser à mon cas :), le fichier contient en fait du texte crypté ( mon programme est un algo de cryptage très simple : une table ( aleatoire ) est generee pour chaque caracteres.
Chaque caracteres ( e.g a ) est remplacé par une combinaison de 6 chiffres, lettres ou caracteres speciaux ( par exemple 0xDf@%% pour la lettre "a" ).
L'encryption est parfaitement implémenté mais je ne peux pas decrypte ( ce sur quoi je trvail ... ).
Monprog --encrypt [filename] crypte le fichier demandé.
Maintenant, il faut que je cree l'option --decrypt. Pour cela je dois lire dans le fichier crypté et ma variable doit contenir 6 caracteres ( je dois lire le fichier 6 lettres par 6 lettres ) puis avec un série de teste déjà implémenté la chaine de 6 caracteres ( lettres ou autre ) seront transformé en vrai l"lettre" ou chiffre dans le fichier [filename].decrypt.
Donc ma chaine chaine_actuel[] doit contenir 6 caracteres de fgetc() ( tout les 6 caracteres represente un vrai caractere ( non crypté ).
Peut être existe-t-il une fonction permettant de lire chaine par chaine ( ou on pourrait spécifier le nombre de caractere de cette chaine ) ce qui contournerait le problème ...
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
12 sept. 2011 à 20:12
12 sept. 2011 à 20:12
Effectivement, il y a des fonctions qui sont plus adaptées dans ton cas.
Je te conseille donc de faire : char chaine_actuel[7]; (ne pas oublier le '\0' final).
Ensuite, il te reste plus qu'à lire par bloc de 6 avec : fgets(chaine_actuel, sizeof chaine_actuel, fichier). fgets renverra NULL lorsque tu seras en fin de fichier.
Cela répond à ta question ?
Je te conseille donc de faire : char chaine_actuel[7]; (ne pas oublier le '\0' final).
Ensuite, il te reste plus qu'à lire par bloc de 6 avec : fgets(chaine_actuel, sizeof chaine_actuel, fichier). fgets renverra NULL lorsque tu seras en fin de fichier.
Cela répond à ta question ?
noobuxtu
Messages postés
89
Date d'inscription
mardi 12 avril 2011
Statut
Membre
Dernière intervention
13 septembre 2011
1
Modifié par noobuxtu le 13/09/2011 à 18:57
Modifié par noobuxtu le 13/09/2011 à 18:57
Malheureusement non :(, c'est ce que j'essais actuellement ( j'ai trouvé en faisant man fgetc() ).
Mon code est ainsi mais il ne lit pas 7 caracteres par 7 caractere ...
Déjà il ne lit pas tout le fichier ... ( il en manque .. ) et en plus la chaine_actuelle est parfois moins longue que 7 ( parfois de 3 ou 2 ... ). Seule la première chaine lu est une chaine de 7 caracteres ...
Par exemple si mon fichier contient ça :
Mon prog affiche ça ....................... :
Non seulement il n'affiche pas 7 par 7 mais en plus il affiche dans un ordre improbable ( comme si il faisait des gotos dans le fichier :p ).
Mon code est ainsi mais il ne lit pas 7 caracteres par 7 caractere ...
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { FILE* encrypt_file = NULL; FILE* decrypt_file = NULL; encrypt_file = fopen("encrypt_file", "r"); decrypt_file = fopen("file_decrypted", "w"); if (encrypt_file != NULL) { char chaine_actuelle[7] = ""; while (fgets(chaine_actuelle, 7, encrypt_file) != NULL) { // NE LIS PAS TOUT LE FICHIER 7 PAR 7 :(( fgets(chaine_actuelle, 7, encrypt_file); printf("%s\n", chaine_actuelle); } fclose(encrypt_file); fclose(decrypt_file); } }
Déjà il ne lit pas tout le fichier ... ( il en manque .. ) et en plus la chaine_actuelle est parfois moins longue que 7 ( parfois de 3 ou 2 ... ). Seule la première chaine lu est une chaine de 7 caracteres ...
Par exemple si mon fichier contient ça :
0xgfff00xllOPP
Mon prog affiche ça ....................... :
00xllO PP
Non seulement il n'affiche pas 7 par 7 mais en plus il affiche dans un ordre improbable ( comme si il faisait des gotos dans le fichier :p ).
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
Modifié par fiddy le 14/09/2011 à 20:59
Modifié par fiddy le 14/09/2011 à 20:59
Bonsoir,
Normal, qu'il ne lise pas 7 caractères par 7 caractères.
Tu as demandé de lire 6 par 6.
Si tu souhaites 7 par 7, il faut mettre : char chaine_actuel[8];
Normal, qu'il ne lise pas 7 caractères par 7 caractères.
Tu as demandé de lire 6 par 6.
Si tu souhaites 7 par 7, il faut mettre : char chaine_actuel[8];