Boucle

snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011 - 14 sept. 2007 à 22:46
snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011 - 16 sept. 2007 à 12:34
bon soire,
commant faire pour  qu'une boucle (for) sache combien de lettre il y a dans  char??
car je veux fair une boucle qui prends la premier lettre de char1,puit elle la substitu et la met dans  char2, puis elle fait la même chose avec la deusième lettre etc etc.
jusqu'a qu'il n'y est plus de lettre, la elle affiche a le char2.

16 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 sept. 2007 à 23:07
Faudra vraiment que tu te décides à étudier un bouquin de C, toute autre méthode te fera perdre du temps et rien de plus.
Dans un char, on ne met qu'un octet ou caractère.
Sans un char* il y a strlen(char*) caractères, à savoir le nbr d'octets jusqu'au 1er 0 rencontré.

Ce qui donnerait:
char texte[] = "YOUPI";

On compte le nbr de caractères:
len = strlen(texte);

ou alors codé à la main:
char *c = texte;
while(*c) c++;
len = c - texte;

ciao...
BruNews, MVP VC++
0
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
14 sept. 2007 à 23:14
bonsoir,
tu peu utiliser strlen
"
char source[32]="Ton texte ici....";
int i=strlen(source);
for( int c=0;c<=i;c++)
.
.
.
"
PS:Juste un petit truc essais d'etre un peu plus clair la prochaine fois et l'hortographe aïe aïe aïe.
@++;
0
snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011
14 sept. 2007 à 23:30
désolé pour les fautes.
merci enfait.
voila se que j'ais fait:
 

------------------------
main()
{
int x;
char y;
char *s;
int i=strlen(s);
gets(s);
for( int c=0;c<=i;c++)
{
  x=*s-1;y=x;  
cout<<y<<endl;}
system("pause");
}
----------------------
mais sa ne marche pas sa me met que la première lettre pk??
0
snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011
14 sept. 2007 à 23:31
et BruNews je ne comprends pas ta métode peus tu me l'expliquer??
stp.
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 sept. 2007 à 23:43
i = strlen(PointeurNePointantNullePart);
Tu viens exactement de montrer le bien fondé de ma remarque au dessus.

Un pointeur doit pointer sur un buffer réservé:
- soit sur stack.
- soit alloué dynamiquement.
- soit sur une constante en segment de données.

char texte[] = "YOUPI";
le pointeur 'texte' est l'adresse du 1er octet de la chaine constante (segment de données).
char *c = texte; on pointe à l'adresse de 'texte.
while(*c) c++; tant que c pointe un NON 0 alors c avance d'une unité en mémoire.len c - texte; donc len adresseFin - adresseDebut.

ciao...
BruNews, MVP VC++
0
snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011
15 sept. 2007 à 00:10
la j'ai fait sa :
-------------------------
main()
{
int x;
    char y;
char texte[] = "YOUPI";
char len = strlen(texte);
char *c = texte;
while(*c) {c++;


len = c - texte;
x=*texte;
y=x;
cout<<y;
}
system("pause");
}
main()
{
int x;
    char y;
char texte[] = "YOUPI";
char len = strlen(texte);
char *c = texte;
while(*c) {c++;


len = c - texte;
x=*texte;
y=x;
cout<<y;
}
system("pause");
}
------------------------------
le problème est que sa m'écris que "yyyyy"
et pas "youpi"
pk?
ps: merci pour votres aide
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 sept. 2007 à 00:20
Remettons bien indenté pour que ce soit clair:
while(*c) {
  c++;
  len = c - texte;
  x = *texte;
  y = x;
  cout << y;
}


len = c - texte; ne sert à rien dans la boucle
reste donc:
while(*c) {
  c++;
  x = *texte;
  y = x;
  cout << y;
}


on voit qu'il ne reste d'utile que:
while(*c) {
  c++;
  x = *texte;
  cout << x;
}


répéter 5 fois: x = *texte;
normal qu'il t'affiche yyyyy

ciao...
BruNews, MVP VC++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 sept. 2007 à 00:21
Expose nous plutot CLAIREMENT le but à atteindre et on verra demain ce qu'il faut coder.
Bonne nuit.

ciao...
BruNews, MVP VC++
0
snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011
15 sept. 2007 à 00:33
en clair je veux prendre un texte, puit prendre chaque lettre de se texte, en suite je veux mettre ces lettres en code ascii, et leur enlever 1 ou2 à leur code (ascii).


pui les remètre en lettre normal. voila.


car cette fonction va servire pour un cryptage que j'ai en tête.


bonne nuit à toi aussi pour demain pas de problèmme après le taf :-(.


car je taf aussi le samedi
lol ma foix sa arrive
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 sept. 2007 à 09:05
#include <windows.h>
char szappname[] = "CDEF";


void __stdcall Tester()
{
  char buf[12], *c;
  // ON MODIFIE LA COPIE DANS UN BUFFER
  strcpy(buf, szappname);
  c = buf;
  while(*c) { // TERMINATEUR 0 DOIT LE RESTER
    --*c; // -1 A CHAQUE OCTET DE LA CHAINE
    c++; // POINTEUR AVANCE
  }
  MessageBox(0, buf, szappname, 0);
}

ciao...
BruNews, MVP VC++
0
snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011
15 sept. 2007 à 13:27
trop fort merci sa marche,
mon cryptage va étre parfait
un truc pour info si tu fais :
char buf[12], *c;
c'est la même chose que:
char buf[12];     
char *c;   ???
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 sept. 2007 à 16:51
évidemment.

ciao...
BruNews, MVP VC++
0
snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011
15 sept. 2007 à 16:56
ok,
bon j'ais un peux testé mon cryptage, et mon idée de enlever 1 au code acsii est tomber a l'eau.
sa ne marche pas avec de très long texte de plus, sa fait foirer tou le reste!! mais j'ais écris un code  (cryptage) je te l'envois en priver peux tu me dir se qu'il vaut?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 sept. 2007 à 17:01
On peut enlever 1 comme faire nimporte quelle autre opération quelle que soit le nombre d'octets à traiter.
Pas le temps de faire du sur mesure, désolé.

ciao...
BruNews, MVP VC++
0
snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011
15 sept. 2007 à 17:09
je ne te critique pas au contraire c'est se que je voulais fair, mais sa ne marche pas avec mon idée.
impossible d'inverser les bits, puis enlever 1 au code acsii de toute les lettre,simbole etc.
et de re inverser les bits..
sa ne marche pas s'étais sa mon idée de base.
0
snpier wolf Messages postés 216 Date d'inscription samedi 11 août 2007 Statut Membre Dernière intervention 30 mai 2011
16 sept. 2007 à 12:34
bonjour,
BrunNews je te remerci de ton aide.
a++
0
Rejoignez-nous