snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 mai 2011
-
14 sept. 2007 à 22:46
snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 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.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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;
tibob51
Messages postés268Date d'inscriptionvendredi 30 avril 2004StatutMembreDernière intervention13 mai 20132 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.
@++;
snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 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??
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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.
snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 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
snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 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 :-(.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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);
}
snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 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; ???
snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 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?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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é.
snpier wolf
Messages postés216Date d'inscriptionsamedi 11 août 2007StatutMembreDernière intervention30 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.