Problème de code (concaténation de chaines)
Voilà, j'ai ecrit ce code dans le but de m'exercer à la manipulation des tableaux et chaines de caractères, le but etant d'afficher une chaine : "BONJOUR MARC" à l'écran...
Seulement voilà deux problèmes se posent :
1) Ce programme affiche bien la chaine demandée mais lorsque l'on appuie sur une touche pour continuer, une erreur debug Visual C++ s'affiche :
Run-Time check failure #2- Stack around the variable 'tab2' was corrupted
2) Si je modifie tab1[]={'B','O','N','J','O','U','R','R','R','\0'}; par exemple, alors la chaine affichée n'est même plus correcte elle affiche qqch comme ca :
BONJOURRR |'||||BONJOURRAfficher une touche pour continuer...
(un truc comme ca tout parasité...)
Code:
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 26 27 28
|
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
int main(int argc, char* argv[])
{
char tab1[]={'B','O','N','J','O','U','R','\0'};
char tab2[]={'M','A','R','C','\n','\0'};
char tab3[]={' '};
int tab1_size=sizeof(tab1),tab2_size=sizeof(tab2);
for (int i=0;i<=(tab1_size+tab2_size);i++)
{
if (i<tab1_size)
tab1[i]=='\0'?tab3[i]=' ':tab3[i]=tab1[i];
else
tab3[i]=tab2[i-tab1_size];
}
printf(tab3);
system("pause");
return 0;
} |
Je ne comprend vraiment pas le problème, pouvez-vous m'aider ?
Merci d'avance !
PS : Ne me dites pas d'utiliser string.h ce n'est pas le but de mon 'exercice d'entrainement...'