L'Informatique
HTML |  Javascript |  DOM |  PHP |  PHP-MySql |  Sessions en PHP |  JSP |  TomCat |  ASP
Java |  C |  C# | 
SQL |  Oracle |  PL/SQL |  les index |  Données multimédia : les LOBs |  Intermedia Text |  projet ORDVideo & Java
BMP |  PBM |  PGM |  PPM | 
UML |  Diagramme Use Case |  Diagramme de classes | 
Liens informatique |  Autres Liens | 

Recherche personnalisée

C - C++



Il est difficile de trouver ce qu'on veut sur les bases en C ou C++. Je liste ici aussi les fonctions les plus courantes.





Résumé C :

#include <stdio.h>
#include "mesfoncions.h"

#define PI 3.1415926535897932384626433832795 ...
struct point              structure point
{
  int x;
  int y;
};
typedef struct point      type
{
  int x;
  int y;
} monType;

int main(int argc, char * argv[])
{
   /*déclarations*/
   int nb;

   /*corps*/
   scanf("%d",&nb);
   printf("nb vaut: %d \n",nb);
   return 1;
}


Compilation sous Unix :

gcc -o nom_executable fichier1.c fichier2.c



C résumé cours main

Voici les types qui existent en C :


Taille minimale des types:

printf et scanf (stdio.h)
quelques formats: %c char
%d int
%f float%7.2f = 4 chiffres, le point et 2 chiffres (9999.99)
%s char *
%u unsigned int
%ld long int
%e float ou double écrit en puissance de 10

i++effectué après
++ieffectué en premier

opérateurs:
~ complément à 1inverse chaque bit
& ET logique bit par bit
| OU logique bit par bit
^ OU exclusif bit par bit
<<décalage des bits à gauche
>>décalage des bits à droite

&& ET logique
|| OU logique
exemple:

int nb = 9;
int Moitie;
Moitie = nb >> 1;


opérateur ternaire:
(condition ? valeur retournée si oui : valeur retournée si non); exemple:

if(A < B)
  C=A;
else
  C=B;

équivalent à

C = (A < B ? A : B);


tableaux:
int Tab[2][3]; <=> int Tab[3][2];    tableau à deux dimensions

pointeurs (aperçu) :
char Chaine[20];  Chaine est un pointeur sur le premier élément
int * pNb;  pointeur sur un entier
&pNb  valeur de l'entier pointé par pNb
structures de contrôle :

if(condition)
{
  traitement
}
else
{
  traitement
}

for(i=0; i<10; i++)
{
  traitement 10 fois ici
}

int Sortie = 0;
int Nb;
while(Sortie == 0)
{
  printf("saisir une valeur:");
  scanf("%d",&Nb);
  if(Nb == 0)
    Sortie = 1;
}
Le code précédent n'est pas optimisé, c'est juste pour montrer la boucle while.

do
{
  traitement
} while(condition);
On passe au moins une fois dans la boucle car la condition de continuité est vérifiée à la fin.

switch(variable)
{
  case 1:
  case 2:
     traitement 1
     break;
  case 3:
     traitement 2
     break;
  default:
     traitement par défaut
}






Quelles sont les fonctions sur les chaînes de caractères ?
dans string.h

char * STRCPY(char * but, const char * source); copie source vers but et retourne but.

char * strncpy(char * but, const char * source, int longueur_max); copie au maximum longueur_max caractères de source vers but.

char * STRCAT(char * but, const char * source); concatène source à but ("bon"+"jour"="bonjour")

char * strncat(char * but, const char * source, size_t longueur_max); concatène au maximum longueur_max caractères de source à but.

int STRCMP(const char * Ch1, const char * Ch2); compare Ch1 et Ch2

valeur de retour:
    négative si Ch1 < Ch2
    négative si Ch1 > Ch2
    0 si Ch1 = Ch2

int strncmp(const char * Ch1, const char * Ch2, size_t longueur_max); compare Ch1 et Ch2 sur au maximum longueur_max caractères

char * strchr(const char * Ch, char C); retourne un pointeur sur la première occurrence du caractère C dans Ch

char * strrchr(const char * Ch, char C); retourne un pointeur sur la dernière occurrence du caractère C dans Ch

char * STRSTR(const char * Ch1, const char * Ch2); retourne un pointeur sur la première occurrence de Ch2 dans Ch1

size_t STRLEN(const char * Ch); retourne la longueur de Ch

void * memcpy(void * but, const void * source, size_t lg); copie lg octets de source vers but (pas de recoupement possible entre source et but)

void * memmove(void * but, const void * source, size_t lg); copie lg octets de source vers but (recoupement possible entre source et but)


dans stdlib.h

int ATOI(const char * Ch); convertit Ch en entier

ATOF idem en double
ATOL idem en long

int itoa(int valeur, char * string, int base); convertit valeur en chaîne de caractères dans la base base
int rand(); retourne un entier aléatoire entre 0 et RAND_MAX

void * calloc(size_t nb_blocs, size_t taille); réserve nb_blocs consécutifs de chacun taille octets, initialise la zone à 0 et retourne le pointeur sur cette zone

void * malloc(size_t taille); réserve une zone de taille octets sans initialisation et retourne un pointeur sur cette zone

void realloc(void * adresse, size_t taille); modifie la taille de la zone allouée à l'adresse adresse

void free(void * adresse); libère la mémoire de la zone pointée par adresse


dans math.h

double cos(double x);
double sin(double x);
double tan(double x);
double acos(double x); arccos(x)
double asin(double x); arcsin(x)
double atan(double x); arctan(x)
double cosh(double x);
double sinh(double x);
double tanh(double x);
double EXP(double x); exponentielle(x)
double LOG(double x); logarithme népérien de x
double LOG10(double x); logarithme base 10 de x
double POW(double x, double y); x puissance y (xy)
double SQRT(double x); racine carrée
double ceil(double x); arrondi x à l'entier supérieur
double floor(double x); arrondi x à l'entier inférieur
double fabs(double x); valeur absolue de x

dans ctype.h

int isalnum(char C); retourne 1 si C est une lettre ou un chiffre ou 0 sinon

int isalpha(char C); retourne 1 si C est une lettre ou 0 sinon

int isdigit(char C); retourne 1 si C est un chiffre ou 0 sinon

int islower(char C); retourne 1 si C est une lettre minuscule ou 0 sinon

int isspace(char C); retourne 1 si C est un séparateur (espace,fin de ligne,saut de page,tabulation) ou 0 sinon

int isupper(char C); retourne 1 si C est une lettre majuscule ou 0 sinon



Comment générer des nombres aléatoires ?
Il est souvent utile de pouvoir générer aléatoirement des entiers ou des réels :

#include <time.h>

...

/*initialisation aléatoire*/
srand(time(NULL));

nb = (int) (101 * ((float) rand() / RAND_MAX + 1));  nombre entier entre 0 et 100 (ce qui est appris en cours)

ou

nb = rand() % 101;       idem



Comment lire et écrire dans un fichier ?

Ouverture et fermeture d'un fichier:

FILE * fich;
fich = fopen("c:\\fichier.txt",mode);
if(!fich) erreur;
fclose(fich);

mode peut prendre les valeurs suivantes:
Fonctions pour manipuler les fichiers:

int fgetc(fich); lit un caractère, retourne l'entier correspondant
int fputc(char caractere, fich); écrit caractere, retourne l'entier correspondant
EOF retourné si fin de fichier

char * fgets(char * Ch, int longueur, fich); lit au maximum (n-1) caractères, placés dans Ch;
    "\0" est écrit à la fin.
int fputs(const char * Ch, fich); écrit Ch et retourne le nombre de caractères écrits.

fprintf(fich,"%d",Nb); comme printf, on précise le fichier.
fscanf(fich,"%s",Ch); comme scanf, on précise le fichier.

écriture de structures:
struct Personne
{
  char Nom[30];
  char Prenom[30];
} unePers;

scanf("%s",unePers.Nom);
scanf("%s",unePers.Prenom);
fich = fopen("c:\\fichier.txt","w");
fwrite(&unePers, sizeof(struct Personne), 1, fich); écriture d'un enregistrement
fread(&unePers, sizeof(struct Personne), 1, fich); lecture d'un enregistrement
fclose(fich);

Positionnement dans un fichier:

fseek(fich, déplacement en octets, mode);
    avec mode=0 : par rapport au début
    avec mode=1 : par rapport à la position courante
    avec mode=2 : par rapport à la fin

rewind(fich); on revient au début du fichier

int ftell(fich); retourne la position courante en octets par rapport au début



Romain C