Lire un fichier de parametre [Résolu]

cs_gab55 10 Messages postés mardi 7 juin 2005Date d'inscription 21 juin 2005 Dernière intervention - 7 juin 2005 à 11:30 - Dernière réponse : cs_gab55 10 Messages postés mardi 7 juin 2005Date d'inscription 21 juin 2005 Dernière intervention
- 7 juin 2005 à 15:14
Bonjours a tous
Je suis débutant en c++ et je doit modifier un programme dejas existant.
Je travaille sous embedded visual c++ 4 car mon programme est destinné a un PDA
Il faut que j'aille lire un fichier texte ou se trouve une chaine de caractere,qui corepond a une variable que je veut utiliser dans mon programme.
j'ai essayer GetPrivateProfileString et fstream mais cela ne fonctionnne pas sous embedded.
j'ai adopte cette solution mais ce la ne marche pas beaucoup mieux:

FILE *fichier;
char valeur[100];
fichier = fopen("[file://test.txt/ \\test.txt]", "r");
fread(&valeur,1, LONGUEUR, fichier);
valeur ::AfxMessageBox(CString(valeur));
CString svsPath=valeur;
fclose(fichier);

car la taille de ma chaine de caracteres est variable et dans ce cas la lecture depasse la fin de la ligne.
le contenu de mon fichier txt est pour l'instant le suivant :
[file://Cartes/ \\Cartes] svs\\69\\Lyon_1118_69_01_07_2005.svs

Merci d'avance pour vos reponses
ps:dsl je sait qu'il existe beacoup de reponse sur ce forum a ce sujet mais bon je suis vraiment bloque
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
ymca2003 2070 Messages postés mardi 22 avril 2003Date d'inscription 3 juillet 2006 Dernière intervention - 7 juin 2005 à 14:04
3
Merci
le '\0' sert à termier les chaînes de caractères en C (caractère nul).
le len sert à savoir combien de caractères on a lu avec fread.
et donc valeur[len] permet de terminer la chaîne à cet endroit. Sans cela, l'affichage continuera jusqu'au premier caractère nul
en mémoire.

avec fread, tu lis le fichier en continue alors qu'avec fgets, tu lit ligne par ligne et le '\0' est mis automatiquement. Par contre il reste à virer le retrour chariot \n de la châine
char valeur[100];
fgets(valeur, 100, file);
int len = strlen(valeur);
if(len > 0 && valeur[len-1] == '\n')
valeur[len-1] = '\0';

Merci ymca2003 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de ymca2003
ymca2003 2070 Messages postés mardi 22 avril 2003Date d'inscription 3 juillet 2006 Dernière intervention - 7 juin 2005 à 11:47
0
Merci
Il faudrait rajouter un '\0' à la fin de la ligne :
int len = fread(&valeur,1, LONGUEUR, fichier);
valeur[len] = '\0';

il existe ausi fgets qui lit une ligne en entier (en gardant le saut de ligne \n par contre).
Commenter la réponse de ymca2003
cs_gab55 10 Messages postés mardi 7 juin 2005Date d'inscription 21 juin 2005 Dernière intervention - 7 juin 2005 à 13:20
0
Merci
heu dsl mais j'ai pas super bien compris ce que tu voulais dire \0 permetrait de reperer les fin de lignes??
et len sert a quoi?
si tu pouvais me montrer dans un exemple ca serais cool merci
Commenter la réponse de cs_gab55
cs_gab55 10 Messages postés mardi 7 juin 2005Date d'inscription 21 juin 2005 Dernière intervention - 7 juin 2005 à 14:37
0
Merci
ok merci donc normalement avec ce code ca lit exactement la ligne de caractere que g entré??!!
FILE *fichier;
char valeur[100];

fichier = fopen("[file://test.txt/ \\test.txt]", "r");
fgets(valeur,100, fichier);
int len = strlen(valeur);
if(len > 0 && valeur[len-1] == '\n')
valeur[len-1] = '\0';



::AfxMessageBox(CString(valeur));
CString svsPath=valeur;
fclose(fichier);

Si ensuite je veut choisir une ligne du fichier text je peut faire comment?
Commenter la réponse de cs_gab55
ymca2003 2070 Messages postés mardi 22 avril 2003Date d'inscription 3 juillet 2006 Dernière intervention - 7 juin 2005 à 14:40
0
Merci
faire fgets n fois n étant le numéro de ligne.
int n = 3;
do
{
fgets(valeur,100, fichier);
n--;
}
while(n > 0)

devrait récupérer la 3 ème ligne.
Commenter la réponse de ymca2003
cs_gab55 10 Messages postés mardi 7 juin 2005Date d'inscription 21 juin 2005 Dernière intervention - 7 juin 2005 à 14:58
0
Merci
Merci beaucoup je vien te tester et ca marche tres bien
ce que je voudrais faire maintenant comme je l'ai dit au dessu c'est pouvoir choisir la ligne du fichier text que je veut lire ( ca serait bete de cré un fichier texte pour chaque parametre)
si tu as une idée merci d'avance pour ta réponse .
Commenter la réponse de cs_gab55
cs_gab55 10 Messages postés mardi 7 juin 2005Date d'inscription 21 juin 2005 Dernière intervention - 7 juin 2005 à 14:59
0
Merci
dsl j'avais pas vu ta réponse merci je vais tout de suite essayer ca .
Commenter la réponse de cs_gab55
cs_gab55 10 Messages postés mardi 7 juin 2005Date d'inscription 21 juin 2005 Dernière intervention - 7 juin 2005 à 15:14
0
Merci
encore merci pour le choix de la ligne cette solution marche aussi
Commenter la réponse de cs_gab55

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.