renverser une chaine de caractere - C++ - Programmation
Marsh Posté le 16-10-2002 à 21:03:08
Code foireux ici : 
 
| Code : 
 | 
 
Marsh Posté le 16-10-2002 à 21:05:16
Ca aussi c'est completement faux, mais comme le debut est faux aussi ca compte plus  
 
 
| Code : 
 | 
 
 
Et on peut dire que ca aussi c'est pas top mais ca peux se faire : 
 
| Code : 
 | 
Marsh Posté le 17-10-2002 à 03:52:01
On peut faire plus court...
| Code : 
 | 
 
Edit: bogué, correction plus bas
Marsh Posté le 17-10-2002 à 10:28:04
Ou alors: 
| Code : 
 | 
 
 
Implemetation Microsoft... hummm...   
 
Marsh Posté le 17-10-2002 à 10:41:33
musaranmuasran : c pas la norme aue je dis utiliser a mon ecole. 
 
YungMakko : tu mets *string- = ch; vdans le dernier while, tu t'es pas tromper ? 
sinon, ca vaeut dire koi ?
Marsh Posté le 17-10-2002 à 12:32:46
ou strrev(unechaine) 
Marsh Posté le 17-10-2002 à 15:05:40
| Musaran a écrit a écrit  : On peut faire plus court... 
   | 
 
Quel intérêt de mettre un while dans la macro. Il aurait été plus simple d'écrire : 
| Code : 
 | 
 
En plus, il y a des parenthèses en trop dans la signature de la macro. 
 
Je sais, tu vas me dire, du coup : 
| Code : 
 | 
sera expansé en :
| Code : 
 | 
 
 
et il y aura un point-virgule supplémentaire après l'accolade fermante. Mais on s'en moque : le point-virgule est l'instruction vide en C, et le compilateur le reconnait comme une instruction valide qui ne génère aucune instruction assembleur derrière.
Marsh Posté le 17-10-2002 à 15:25:13
je precise que je ne doit utiliser aucune fct de la lib-C, seulement des fcts que l'on code.
Marsh Posté le 17-10-2002 à 15:47:36
| antp a écrit a écrit  : ou strrev(unechaine)   | 
 
 
C'est pas standard strrev...  
 
Marsh Posté le 17-10-2002 à 15:58:31
Tiens oui, Win32 only d'après la doc de Borland 
Marsh Posté le 17-10-2002 à 16:05:11
| antp a écrit a écrit  : Tiens oui, Win32 only d'après la doc de Borland   | 
 
 
man strrev 
No manual entry for strrev. 
 
Marsh Posté le 17-10-2002 à 16:15:15
ouais bhen j'ai que Borland C++ 5 et Borland C++Builder 5 sous la main pour ce qui est du C++, j'ai pas pensé à cliquer sur "Portability" dans la doc 
Marsh Posté le 18-10-2002 à 04:35:42
| YungMakko a écrit a écrit  : Implemetation Microsoft... hummm...   | 
Le source est peut-être efficace une fois passé par le compilateur. 
L'appel à strlen est évité, mais j'aurais fait une macro à ce moment-là. 
Par contre, le nom "string" est employé à tort ! 
 
| BifaceMcLeOD  a écrit a écrit  : Quel intérêt de mettre un while dans la macro. Je sais, tu vas me dire, du coup [...] il y aura un point-virgule supplémentaire après l'accolade fermante. Mais on s'en moque | 
Ça n'est pas inoffensif:
| Code : 
 | 
Le ";" termine prématurément le if, et le else se retrouve tout seul (erreur). 
Pire, si le if est imbriqué, le else se rattache silencieusement au if supérieur. 
Source: http://www.isty-info.uvsq.fr/~rume [...] .html#q_16 
 
| Citation : En plus, il y a des parenthèses en trop dans la signature de la macro. | 
Copier-coller powered. 
La macro est mal formée, c'est une erreur. 
 
Par contre, tu n'as pas remarqué:
| Code : 
 | 
Voilà ce que c'est d'avoir trop confiance en soi, de ne pas tester son code, et de poster à 4h du matin. 
 
(Testé cette fois-ci)
| Code : 
 | 
Marsh Posté le 18-10-2002 à 10:39:01
| Musaran a écrit a écrit  : Le source est peut-être efficace une fois passé par le compilateur. L'appel à strlen est évité, mais j'aurais fait une macro à ce moment-là. Par contre, le nom "string" est employé à tort ! Ça n'est pas inoffensif: 
 Le ";" termine prématurément le if, et le else se retrouve tout seul (erreur).  | 
 
  
  
 
| Citation : Par contre, tu n'as pas remarqué:[cpp]  | 
Je n'ai pas relu tout ton code, non plus, je te faisais confiance...   
   
 
Marsh Posté le 18-10-2002 à 11:14:46
| Code : 
 | 
Marsh Posté le 18-10-2002 à 19:47:39
Correction : 
 
char    *my_revstr(char *str) 
{ 
  int len; 
  int cpt; 
  int swap; 
 
  len = my_strlen(str); 
  cpt = 0; 
  len--; 
  while (cpt < len) 
    { 
      swap = str[cpt]; 
      str[cpt] = str[len]; 
      str[len] = swap; 
      len--; 
      cpt++; 
    } 
  return (str); 
} 
 
int     my_strlen(char *str) 
{ 
  int   c; 
 
  for (c = 0; *str != '\0'; str++) 
    c++; 
  return (c); 
} 
 
voila ce ke je devais coder
Marsh Posté le 19-10-2002 à 03:54:04
oh vla qq d epitech qui veut pas faire son taff 
Marsh Posté le 19-10-2002 à 03:55:20
| Code : 
 | 
 
 
| Code : 
 | 
 
 
 
comme ca c plus propre
Marsh Posté le 19-10-2002 à 04:59:30
| Code : 
 | 
 
| Code : 
 | 
 
| Code : 
 | 
Enfin bon, ce que j'en dis, moi...
Marsh Posté le 20-10-2002 à 11:37:06
apres avoir passe 5-6 h sur une fonction, j'en pouvais plus alors je suis venu ici. 
a +
Marsh Posté le 16-10-2002 à 21:02:09
j'arrive pas a voir pourquoi mon code me donne 'segmentation fault' aund je le compile.
la focntion doit renvoyer une chaine de caractere place dans str en la renversant : toto -> otot.
char *my_revstr(char *str)
{
int len;
int i;
int j;
char *revstr;
len = nb_char(str);
*revstr = str[len];
i = 0;
j = len - 1;
while (i < len)
{
i++;
j--;
revstr[j] = str[i];
}
revstr[len] = '\0';
return (revstr);}
int nb_char(char *str)
{
int c;
for (c = 0; *str != '\0'; str++)
c++;
return (c);
}