Insertion dans un tableau de caractères
Bonjour,
J'ai codé un programme pour insérer un caractère dans un tableau de caractères, mais ça me tronque la dernière lettre du tableau. Pourtant je rajoute un caractère vide à la fin du tableau avant de faire l'insertion :
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| #include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NMAX 50
void gen_aleat( char v[], int n )
{
int i;
/* rand() retourne un entier aléatoire de l'ens {0,1,2,..,RAND_MAX} (RAND_MAX fixé à 32767 sous VC++)*/
for(i = 0; i < n; i++) v[i] = rand()%(122-97) +97;/* pour avoir aussi des nbrs<0 */
}
void aff_vect( char v[], int n )
{
int i;
for( i = 0; i < n; i++ )
{
printf( "%c", v[i] );
if ( (i+1) % 10 == 0 ) printf( "\n" );
}
printf( "\n" );
}
void insere (char v[],int n, int e, int ind)
{
int i;
i = n-2;
while (i >= ind)
{
v[i+1]=v[i];
i=i-1;
}
v[ind]=e;
}
int main()
{
char v[NMAX];
int n;
int ok;
char e;
int ind;
srand(time(NULL));
do
{
printf( "Entrer le nb d'elements du vecteur ( <= %d ) : ", NMAX );
ok = scanf( "%d", &n );
while( getchar( ) != '\n' ); /* ou fgets(vb,80,stdin) avec char vb[81]; */
}while( !ok || n < 0 || n > NMAX );
gen_aleat( v, n );
printf( "Voici le tableau genere :\n" );
aff_vect( v, n );
v[n]=' ';
printf("Entrer le caractere a inserer : ");
scanf( "%c", &e );
while( getchar( ) != '\n' );
do
{
printf("Entrer l'indice ou vous voulez inserer l'element : ");
ok = scanf( "%d", &ind );
while( getchar( ) != '\n' );
} while (!ok || ind < 0 || ind >= n);
printf("Voici le tableau genere apres insertion : \n");
insere(v,n,e,ind);
aff_vect( v, n );
return 0;
} |