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 : 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
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...'