Exercice langage C : Chaîne de Caractères

1.

(*3) Soit le code suivant :

char tab[] = "bonjour";

int i;

for (i=0; tab[i]!= ’\0’; i++) {

tab[i] = tab[i] - ’a’ + ’A’;

}

Que fait ce programme?

Proposez une version sans utiliser l’opérateur d’accès tableau ([]).

2.

Dans le code suivant :

char ch[] = "Bonjour",

*pc = ch;

while (

*pc) pc++;

Que vautpc après l’exécution de l’instructionwhile? Vers quel caractère pointe-t-il?

3.

Que vaut la variablej à la ?n de la fonctionf?

void f(int i) {

int ?j;

?j = i;

}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1.
 (*2) Donner la déclaration d’un tableau dont chacun de ses 20 éléments est une structure à trois champs : un entier nombre, un pointeur d’entier ptrint et un tableau de 15 caractères.
Supposant ce tableau initialisé, donnez l’expression permettant de placer dans le champ
ptrint du 4ème élément du tableau, l’adresse du champ nombre du 11ème élément.
Réponse : tableau[3].ptrint = &tableau[10].nombre
Avec les déclarations suivantes :
typedef struct examen_t {
int nombre ;
int  ptrint ;
char chaine [15] ;
} Examen ;
Examen tableau[20] ;
2.
 Soit la déclaration suivante : char les[] = "ab".
Que vaut les[2] ?
Réponse : les[2] vaut ’\0’.
Le tableau les est une chaîne de caractères, car il a été initialisé avec une chaîne ("ab").
Le nombre d’éléments de ce tableau est donc le nombre de caractères présent dans la chaîne, plus 1, le caractère de ?n de chaîne. En conséquence, les[2] contient celui-ci, c’est à dire ’\0’.
3. 
 
Donnez une forme équivalente à l’expression &tab[0].
Réponse : &tab[0]   tab.