Chaine dans une fonction en C
Résolu/Fermé
twiiiix
Messages postés
325
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
25 janvier 2014
-
17 janv. 2010 à 15:43
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 - 17 janv. 2010 à 18:05
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 - 17 janv. 2010 à 18:05
A voir également:
- Chaine dans une fonction en C
- Fonction si et - Guide
- Chaine tnt gratuite sur mobile - Guide
- Nouvelle chaîne tnt gratuite 2024 - Accueil - TV & Vidéo
- Plus de chaine tv - Guide
- Fonction moyenne excel - Guide
5 réponses
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
17 janv. 2010 à 16:02
17 janv. 2010 à 16:02
Il suffit de contruire une chaîne de caractères par concaténation du contenu de 'userprofile' et de "\\desk..."". Pour cela utiliser les fonctions 'strcpy' et 'strcat' sans oublier d'allouer l'espace nécessaire pour recevoir le résultat. Ne surtout pas utiliser la variable 'userprofile' pour effectuer la concaténation.
Nota: il faut tester 'userprofile après l'appel à 'getenv' car si la chaîne "userprofile" n'est pas trouvée... je crains la catastrophe (en fait je ne crains rien, mais je suis sûr de la catastrophe!).
Bonne continuation.
Nota: il faut tester 'userprofile après l'appel à 'getenv' car si la chaîne "userprofile" n'est pas trouvée... je crains la catastrophe (en fait je ne crains rien, mais je suis sûr de la catastrophe!).
Bonne continuation.
twiiiix
Messages postés
325
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
25 janvier 2014
56
17 janv. 2010 à 16:10
17 janv. 2010 à 16:10
merci de ta réponse, mais comme je l'ai dis je débute, alors si tu pouvais me dire comment faire une concaténation.
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
17 janv. 2010 à 16:55
17 janv. 2010 à 16:55
Quelque chose du genre:
Bonne réflexion.
char* temp = "\\desktop\\test.txt"; char* chn = malloc (sizeof(userprofile) + sizeof(temp) + 1); strcpy (chn, userprofile); strcat (chn, temp); FILE* fichier = fopen (chn, "r+");Sans oublier de tester 'fichier'.
Bonne réflexion.
twiiiix
Messages postés
325
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
25 janvier 2014
56
17 janv. 2010 à 17:14
17 janv. 2010 à 17:14
j'ai fait ça :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
const char* userprofile=getenv("userprofile");
printf(userprofile);
char* temp = "\\desktop\\test.txt";
char* chn = malloc (sizeof(userprofile) + sizeof(temp) + 1);
strcpy (chn, userprofile);
strcat (chn, temp);
FILE* fichier = NULL;
fichier =fopen (chn, "w");
return 0;
}
mais a l'exécution j'usqu'au printf ça marche puisque l'adresse de mon dossier utilisateur s'affiche puis après j'ai une erreur :
"Process terminated with status -1073741819 (0 minutes, 6 seconds)"
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
const char* userprofile=getenv("userprofile");
printf(userprofile);
char* temp = "\\desktop\\test.txt";
char* chn = malloc (sizeof(userprofile) + sizeof(temp) + 1);
strcpy (chn, userprofile);
strcat (chn, temp);
FILE* fichier = NULL;
fichier =fopen (chn, "w");
return 0;
}
mais a l'exécution j'usqu'au printf ça marche puisque l'adresse de mon dossier utilisateur s'affiche puis après j'ai une erreur :
"Process terminated with status -1073741819 (0 minutes, 6 seconds)"
Bonjour
loupius est distrait ce soir :)
strlen, pas sizeof ...
sizeof donne la taille du pointeur, ce qui n'a rien à faire ici. C'est strlen qui donne le nombre de caractères
loupius est distrait ce soir :)
strlen, pas sizeof ...
char* chn = malloc (strlen(userprofile) + strlen(temp) + 1);
sizeof donne la taille du pointeur, ce qui n'a rien à faire ici. C'est strlen qui donne le nombre de caractères
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
17 janv. 2010 à 18:05
17 janv. 2010 à 18:05
L'habitude de mettre des 'sizeof' dans les 'malloc'...
L'avantage du forum est de pouvoir, sans masochisme, se faire corriger !
Merci à toi.
L'avantage du forum est de pouvoir, sans masochisme, se faire corriger !
Merci à toi.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
twiiiix
Messages postés
325
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
25 janvier 2014
56
17 janv. 2010 à 18:03
17 janv. 2010 à 18:03
Merci beaucoup tout marche impec.