Problème de char

minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 - 24 août 2004 à 20:39
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 25 août 2004 à 21:27
Bonjour c'est encore le débutant, voilà le code :

#include <conio.h>
#include <stdio.h>
#include <string.h>

char inverser_char(char variable[])
{
int longueur = strlen(variable); // longueur de variable
int cpt; // pour les boucles
char new_variable[256]; // pour stocker la variable inverser
for(cpt=longueur;cpt>=0;cpt--)
{
strcat(new_variable, variable[cpt]); // Cannot convert 'int' to ' const char *'
printf("% dans %s\n", variable[cpt], new_variable);
}
return *new_variable;
}

int main()
{
clrscr();
char code[256];
printf("Entre une chaine de caractere : ");
scanf("%s", code);
printf("Nouvelle chaine : %s", inverser_char(code)); getch();
return 0;
}

En attendant que je trouve un bon truc aidé moi pour ça svp merci

49 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
24 août 2004 à 23:34
djl> Apparement oui, tes dire sont bons. Le code ASM l'a montré.

Shell
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
24 août 2004 à 23:35
ok merci, desque j'ai le temps je regarde, mais ca remet en cause pas mal de chose !
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
24 août 2004 à 23:36
VC6, optimisation globale et favorisant la vitesse.
Puis essayé avec les 2 func.

Shell
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 août 2004 à 23:37
GetTickCount est 'pour rire', pas pour mesures precises.

Bon la, c'est du kif kif, faut reconnaitre.
Vais tenter d'ecrire la mienne dans MON asm direct.

ciao...
BruNews, Admin CS, MVP Visual C++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
24 août 2004 à 23:38
pour BruNews ca devais etre vs2003
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
24 août 2004 à 23:39
sous gcc celle de DeAtHCrAsH est plus rapide (rapport 13/16 mais mesure imprecise)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 août 2004 à 00:21
http://brunews.free.fr/Reverse.zip

Vous pouvez verifier, cette fois je gagne a toup coup.
OK c'est pas du jeu mais j'aime bien aller le plus vite.
Et toc... qu'est-ce qu'on se marre sur cppfrance.

ciao...
BruNews, Admin CS, MVP Visual C++
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
25 août 2004 à 00:33
LoOl,
Tricheur ta func est en ASM inline.

Bon atta vu que t'as gagné faut que je te rende l'autre moitié de la médaille. Je vais au toillette et tu l'auras, certes un peu en bouillie ;)

Shell
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 août 2004 à 00:35
ah oui j'avais prevenu que c'etait pas du jeu.

ciao...
BruNews, Admin CS, MVP Visual C++
0
DevGizmo Messages postés 122 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 27 février 2007 1
25 août 2004 à 09:50
J'arrive a me situer entre DeAtHCrAsH et BruNews avec ca...
Du coup je me passe de faire dix milles lignes d'asm
et globalement d'un point de vue efficacite, je ne suis pas si loin que ca...!!!

char * __fastcall Fred_ReverseStr(char *szIn)
{
register char c;
register char *start = szIn;
register char *end = szIn + strlen(szIn);

while(start < end)
{
c = *start;
*(start++) = *(--end);
*end = c;
}
return szIn;
}
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
25 août 2004 à 10:24
tu as testé avec les options d'optimisations ?
parce que register c'est carrement obselete, le compilo le fais tres bien tous seul
tu devrais essayer sans, normalement ca change rien

a part ca c'est le meme algo que ma fonction il me semble
0
DevGizmo Messages postés 122 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 27 février 2007 1
25 août 2004 à 11:16
djil > j'avais pas vu ton post...effectivement c le meme
Quand aux register, ca depend du degre d'optim demande au compilo...car il ne le fait pas systematiquement
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
25 août 2004 à 12:54
lol

excellent ts

je V po essayé avec ma BString::inverse, je serai aux paquerettes.... (quoique)
{vu que C une fonc peut utilisée, je me suis po cassé à l'optimiser...}

mdr, BruNews utilise une DLL...

pourrais tu ns en donner les srce ou l'URL si elle figure parmis....
Elle semble diablement intéressante avec ces 6 fonctions...

à propos, je met des b pour Bibli et ...
toi tu met tes initiales....
pkoi po, ça rassemble nos fonctions en tt cas

+++
Bonne prog à ts

Magic Nono: l'informagicien! 8-)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 août 2004 à 13:16
magic_Nono> quand je te verrai plus souvent sur asmfr, tu auras les sources de ma dll.
Bonne reponse hein ?

ciao...
BruNews, Admin CS, MVP VC++
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
25 août 2004 à 14:21
k

mé C po pr demain ni pr après demain....
on verra ça avt la retraite ptet... :shy)

Magic Nono: l'informagicien! 8-)
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
25 août 2004 à 16:34
j'y mettrai prochainement un petit SE multitache, promi

euh au fait,

comment envoyer un char* ds ECX ,
comment faire ECX= psz ???

(je ve bien que ecx soit le 1er param mais
ds mon cas, C une var de la classe, po un param)

Magic Nono: l'informagicien! 8-)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 août 2004 à 16:50
param d'une classe est un offset sur *this.

ciao...
BruNews, Admin CS, MVP VC++
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
25 août 2004 à 18:35
k...

ça m'aide ceci dit mais peu:
dslé, je suis un peu novice en C++ & ASM ensemble...

voici ce dont je dispose:

class BString
{
public:
...
private:
...
bool m_bMinMajDifferentes;
unsigned int m_iTaille;
char*m_str;
};

si je modifie ceci en

class BString
{
private:
char*m_str;
bool m_bMinMajDifferentes;
unsigned int m_iTaille;
public:
...
private:
...
};

comment alors affecter la valeur de this (ça sera bien alors l'@ de ma chaine (?) ds la variable ECX ???

Magic Nono: l'informagicien! 8-)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
25 août 2004 à 18:46
pas de passe droit, accede au pointeur par un ascesseur plutot

sinon il faudrais faire

BString s;

ECX = *(char **)&s; // mais c'est anti c++

ta pas une methode c_str() ou un operateur de cast dans ta classe ?

c'est bien ce que tu veux faire ? (moi aussi je connais pas l'asm)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 août 2004 à 18:53
Ce n'est pas a toi d'affecter ECX, ton compilo va le faire s'il voit un appel a une fonction __fastcall.
A toi de passer le bon pointeur attendu par la func.

ciao...
BruNews, Admin CS, MVP VC++
0
Rejoignez-nous