Saisie clavier et allocation mémoire dynamique

Signaler
Messages postés
24
Date d'inscription
mercredi 10 septembre 2003
Statut
Membre
Dernière intervention
27 mai 2004
-
Messages postés
141
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
23 mars 2005
-
dardarmotus 8-)

Salut à tous les pros du C, C++, C# etc...

Petit novice en galère

Voila mon problème :

je demande à la personne qui utilise le prog de saisir au clavier le chemin complet et le nom du fichier à traiter.

A partir de ce qui a été saisi au clavier je veux récupérer le chemin pour archiver mon fichier de résultat.

Ex : saisie au clavier c:\toto\titi.txt

j'ai deux pointeurs pFin et pFout.

dans le premier je veux récupérer la saisie clavier (pFin = "c:\totot\titi.txt")
dans le deuxième je veux le chemin d'archivage concaténé avec "result.txt" (pFout = "c:\totot\result.txt")

Et ça j'y arrive pas (sauf me faire insulter par mon compilateur)

Merci à tous ceux qui liront mon message

SVP AIDEZ MOI.

11 réponses

Messages postés
398
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
15 juin 2007
2
tu peux faire un truc de ce genre

char *c;
char * pFin = new char[256];
char * pFout = new char[256];
cin >> pFin;
strcpy(pFout,pFin);

c = pFout;
c+=strlen(pFout)-1;

while (*c!='\\')
c--;
*c='\0';
strcat(pFout,"\result.txt");
Messages postés
398
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
15 juin 2007
2
faute de frappe à la fin :
strcat(pFout,"\\result.txt");
Messages postés
24
Date d'inscription
mercredi 10 septembre 2003
Statut
Membre
Dernière intervention
27 mai 2004

dardarmotus 8-)

je te remercie de m'avoir répondu mais je ne suis pas en C++, mais en C.

j'utilise scanf pour récupérer la saisie au clavier etne connaissant pas le nombre de caractère àsisir je ne peux pas dimensionner mon tableau.

Mais encore merci c'est sympa de ta part.

Ca m'aidera peut être quand je me mettrai au C++
Messages postés
398
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
15 juin 2007
2
dans ce cas, remplace new par malloc et cin par scanf
Messages postés
141
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
23 mars 2005
1
c = pFout;
c+=strlen(pFout)-1;

while (*c!='\\')
c--;
*c='\0';

il me semble que pour remplacer ce code
tu peux utiliser la fonction strrchr() // string.h

A vérifier avec l aide

Chevalier Pheno Starboard, membre de la Freeman-Corp
Messages postés
24
Date d'inscription
mercredi 10 septembre 2003
Statut
Membre
Dernière intervention
27 mai 2004

dardarmotus 8-)

Encore une petite question.

Si le texte saisi au clavier dépasse 256 caractères, je n'aurai pas le chemin du fichier à traiter dans sa globalité.

Est-ilpossible de faire une allocation dynamique de mémoire à la saisie du texte

Du genre ;

char *c;
char *pFin;
char *pFout;
char texte[]="";

printf("entrer un nom de fichier\n");
scanf("%s",texte);

pFin=malloc(strlen(texte) +1);

c = pFout;
c+=strlen(pFout)-1;

while (*c!='\\')
c--;
*c='\0';
strcat(pFout,"\result.txt");
Messages postés
141
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
23 mars 2005
1
Je crois que ca ne marche pas
je n ai jamais trouve la solution a ce probleme
Mais bon un chemin de plus de 256 caracteres, ca doit etre rare

Chevalier Pheno Starboard, membre de la Freeman-Corp
Messages postés
398
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
15 juin 2007
2
ce n'est effectivement pas possible
et pour les chemins, je crois que la norme joliet ou je sais plus quoi indique que les chemins doivent faire moins de 255 caractères, d'où le 256
mais bon, si t'as des doutes, tu peux faire un char pFout[1000]; ca va pas trop obstruer la mémoire
Messages postés
24
Date d'inscription
mercredi 10 septembre 2003
Statut
Membre
Dernière intervention
27 mai 2004

dardarmotus 8-)

Et bien merci à tous

mon code a bien avancé

A la prochaine tout le monde
Messages postés
2
Date d'inscription
mardi 14 novembre 2000
Statut
Membre
Dernière intervention
27 janvier 2008

Bonsoir,
je me pose la même question que dardarmotus: "Est-ilpossible de faire une allocation dynamique de mémoire à la saisie du texte"

Car je bosse sur un projet de cryptage et je voudrais faire saisir un texte à l'utilisateur, et un texte de n'importe quelle taille serait bien mieux que de le limiter en caractères...

par exemple je défini un char *texte_saisi et dès qu'il tape un caractère ça alloue une case mémoire en plus et ça affiche le caractère sur l'écran en même temps. Car certes en faisaint un getch à chaque lettre on peut stocker et avec un printf on affiche la lettre tapée, mais on perd l'utilisation de la touche Backspace ou shift.

Personne n'a réussi un programme optimisé en C pour allouer une case mémoire à chaque lettre ??

Merci d'avance pour vos réponses
Messages postés
141
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
23 mars 2005
1
Bonsoir,

En allouant de la mémoire à chaque saisie de caractères, tu ne vas pas optimiser ton programme,

car l'allocation de mémoire consomme énormément de ressources.

Amitié.
Chevalier Pheno Starboard, membre de la Freeman-Corp