Ben si, tu sors du tampon.
Et bien.
Et si je teste ton code dans le debugger de Visual, j'ai une belle Access Violation.
Ben si, tu sors du tampon.
Et bien.
Et si je teste ton code dans le debugger de Visual, j'ai une belle Access Violation.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.








Euh, je sors du tampon ou ?
Ben, ta boucle sort complètement, puisqu'elle ne s'arrête que si elle rencontre un carcatère 15 (un caractère de contrôle non-utilisé).
Et il n'existe aucun caractère 15 dans le tableau explicitement initialisé, donc tu sors forcément...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.








int main(int argc, char *argv[])
{
char mot[30] = "Salut, \0 Ca va ?";
char Sep = '\0';
int i = 0;
int fin = 15;
for(i = 0 ; mot[i] != mot[fin] ; i++)
{
if(mot[i] == Sep)
{
mot[i] = '.';
}
}
cout << "Phrase : " << mot << endl;
return EXIT_SUCCESS;
}
Bon voilà, je comprends pas trop. Quand la chaine est "Salut, \0 Ca va ?" avec un espace entre le \0, il remplace bien. Quand c'est "Salut,\0 Ca va ?" sans espace, il renvoie que "Salut,".
De plus le "fin" marche pas,![]()
La chaîne change de taille si tu retire l'espace, donc mot[fin] est différent...
D'ailleurs, d'où sort ce 15 ?
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.








Ben en fait, vu que c'est un tableau de 2500, je récupère la taille du recv pour faire un genre de Tampon dynamique. Je vais pas afficher les caractères restants. Pareil ici, sur le petit tableau je voulais tester en arrêtant la chaine quelque part. Mais faudrait recopier la chaine dans un autre tableau pour ne pas compter le reste.
Donc voilà, ça change le \0 que si c'est pas près d'un caractère![]()
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #include <iostream> void DeSepareChaine(char *chn, size_t n) { size_t i; for(i=0 ; i<n ; i++) { if(chn[i] == '\0') chn[i] = '~'; } /* Précaution */ chn[n-1] = '\0'; } int main(void) { /*-- ---[--] - "123456778901234" */ char chn[30] = "Salut,\0Ca va ?"; /* La chaine fait 14 caractères, plus le caractère nul de fin */ std::cout << "Avant de-separation : " << chn << std::endl; DeSepareChaine(chn, 15); std::cout << "Apres de-separation : " << chn << std::endl; return 0; }
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager