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);
}