next up previous
suivant: À propos de ce



 
 

#include <stdio.h>
void swap1(int, int);
void swap2(int *, int *);
void swap1(int a, int b) {
  int c;
  c = a;
  a = b;
  b = c;
}
void swap2(int * a, int * b) {
  int c;
  c = *a;
  *a = *b;
  *b = c;
}
int main(void) {
  int a, b;
  a = 1; b = 2;
  printf("a = %d, b = %d\n", a, b);
  printf("appel de la fonction swap1(a, b)\n");
  swap1(a, b);
  printf("a = %d, b = %d\n", a, b);
  printf("*************************\n");
  a = 1; b = 2;
  printf("a = %d, b = %d\n", a, b);
  printf("appel de la fonction swap2(&a, &b)\n");
  swap2(&a, &b);
  printf("a = %d, b = %d\n", a, b);
  return 0;
}
 
 

-bash-2.05b$ gcc -Wall swap01.c -o swap01
-bash-2.05b$ ./swap01 
a = 1, b = 2
appel de la fonction swap1(a, b)
a = 1, b = 2
*************************
a = 1, b = 2
appel de la fonction swap2(&a, &b)
a = 2, b = 1
 

 
Pointeurs et paramètres de fonction. 
 


 


 
 

void swap(int * v1, int * v2) {
  *v1 ^= *v2;
  *v2 ^= *v1;
  *v1 ^= *v2;
}
 

 
Version améliorée de la fonction d'échange de variables. 
 


 


 
 

#include <stdio.h>

void imprimer(char * s);

void imprimer(char * s) {
  while(*s)
    putchar(*s++);
}

int main(void) {
  char chaine[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', ' ', '!', '\n', '\0'};
  imprimer(chaine);
  return 0;
}
 
 

#include <stdio.h>  /* Pour putchar */
#include <stdlib.h> /* Pour malloc et free */
#include <string.h> /* Pour strcpy */

void imprimer(char * s);
char * allouer_chaine(int n);

int main(void) {
  char * str = NULL;
  str = allouer_chaine(20);
  strcpy(str, "Hello World !\n");
  imprimer(str);
  free(str);
  return 0;
}

char * allouer_chaine(int n) {
  char * s;
  s = malloc(n * sizeof * s);
  if(s == NULL) {
    fprintf(stderr, "Erreur d'allocation memoire.\n");
    exit(1);
  }
  return s;
}

void imprimer(char * s) {
  while(*s)
    putchar(*s++);
}
 

 
Pointeurs et chaines de caractères. 
 


 
Devoir 04 :
Écrire une fonction qui prend en argument une chaîne de caractères, alloue (malloc) une zone mémoire suffisante et enfin écrit la chaîne inversée dedans. La fonction retournera le pointeur vers la nouvelle chaîne créée.
Écrire la fonction main appelant cette fonction en lui donnant comme argument l'entrée clavier de l'utilisateur. Imprimer la chaîne retournée par la fonction et enfin libérer l'espace mémoire alloué.
Ce main permet d'inverser plusieurs chaînes dans la même exécution (une boucle). Le programme s'arrêtera quand l'utilisateur entrera le mot quit.

(lire les man de : strcpy, strncpy, memcpy, strdup, strcmp, strncmp, malloc, free.)


next up previous
suivant: À propos de ce
Fares Belhadj 2007-04-05