Bonjour,
j'ai une interro très prochaine en C , et donc j'ai décidé de refaire une des anciennes interro , histoire de bien gérer .. Seulement voilà cela fait plusieurs heures que je bloque sur la réécriture de strncat, où on ne peut pas faire d'allocation mémoire ...
D'abord j'ai fait tenté le coup avec un tableau de caractère , tout fonctionnait bien jusqu'à ce que je sois obligé de return mon tableau, ce qui est pas évident sans allocation mémoire ... Ensuite je suis donc allé voir sur internet le code de strncat:
Je l'ai copié/collé, et visiblement ça ne fonctionne pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include <stddef.h> /* size_t */ char *strncat(char *dest, const char *src, size_t n) { char *ret = dest; while (*dest) dest++; while (n--) if (!(*dest++ = *src++)) return ret; *dest = 0; return ret; }De toute façon il est pas très parlant, donc j'ai décidé de le faire à ma sauce :
Et la même erreur, ou plutôt pas d'erreur : ça s'execute, la fenêtre reste noire et j'ai juste un message : le programme a cessé de fonctionner !
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 char * strncat2013 (char* dest,const char * src, size_t count){ char *ret=dest; while(*dest != 0) { dest++; } while (count > 0) { dest++; *dest=*src; src++; if (*src ==0){ *dest=0; return ret; } } *dest=0; return ret; }
j'ai essayé de voir d'où vient le problème (en mettant des printf un peu partout) , et visiblement c'est cet idiot dequi ne veut pas fonctionner, et qui fait tout planter !
Code : Sélectionner tout - Visualiser dans une fenêtre à part *dest=*src;
Pourriez vous m'aider?
Merci
Voici mon code en entier
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
39
40
41 #include <stdio.h> #include <string.h> #include <stddef.h> char*strncat2013 (char* dest,const char * src, size_t count); int main(void) { char * dest; const char * src; dest="truc"; src="chose"; strncat2013(dest, src, 10); return 0; } char * strncat2013 (char* dest,const char * src, size_t count){ char *ret=dest; while(*dest != 0) { dest++; } while (count > 0) { dest++; *dest=*src; src++; if (*src ==0){ *dest=0; return ret; } } *dest=0; return ret; }
Partager