Bonjour,
voià je desire supprimer d'une chaine de caractere les n premiers caracteres (par exemple les n premiers espaces)
Exemple:
"_______bonjour_" devient "bonjour_"
(_: pour la représentation d'un espace)
donc je ne vais pas y aller par 4 chemins voic mon programme:
Voila. Je ne vois pas du tout pourquoi le free plante !!
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 #include "stdafx.h" #include <conio.h> void supprFisrt(char* buf, int buflen, char c) { char * tmp = (char*)malloc(sizeof(char)*buflen); int current = 0; memcpy(tmp, buf, buflen); while ((*tmp) && (current < buflen) && (*tmp == c) ) { tmp++; current++; } memset(buf, '\0', 1); memcpy(buf, tmp, buflen); buf[buflen-current] = 0; printf("adr buf = %p\n", &buf); printf("adr tmp = %p\n", &tmp); //free(tmp); //ERREUR ICI !!?? return; } int main() { char *data = (char*)malloc(1000); memcpy(data, " information\0", 14); printf("data = [%s]\n", data); printf("adr data= %p\n", &data); supprFisrt(data, 14, ' '); printf("data = [%s]\n", data); free(data); getch(); return 0; }
J'ai aussi une autre question.
Admettons cette fonction toute simple:
Jusque la ok pas de problème... et maintenant si dans le main je fais:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 char* affich() { char *out= (char*)malloc(10); mempcy(out, "tomate\0",7); return out; }
Quand est ce que out est désalloué ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 printf("%s\n", affich()); //j'appelle ma fonction qui retourne un char*
Merci pour m'avoir lu et merci encore de me répondre...
Partager