Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
utilisateurs:hypathie:tutos:memo-c [19/08/2014 16:27] Hypathie [Fonctions] |
utilisateurs:hypathie:tutos:memo-c [30/11/2014 07:39] (Version actuelle) Hypathie [mémo-C] |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
* Niveau requis : {{tag>débutant avisé}} | * Niveau requis : {{tag>débutant avisé}} | ||
+ | |||
+ | Référence : [[http://www.squalenet.net/fr/ti/tutorial_c/sommaire.php5]] | ||
===== Introduction ===== | ===== Introduction ===== | ||
===installation gcc sous debian=== | ===installation gcc sous debian=== | ||
Ligne 144: | Ligne 146: | ||
valeur age: 23 valeur taille: 175 | valeur age: 23 valeur taille: 175 | ||
</code> | </code> | ||
+ | |||
====char : caractère, chaîne de caractères ==== | ====char : caractère, chaîne de caractères ==== | ||
Ligne 1243: | Ligne 1246: | ||
</code> | </code> | ||
- | ====Bibliothèque string.h==== | ||
- | ===fonction strcpy === | ||
- | |||
- | Elle permet d'utiliser la fonction **''strcpy''**. | ||
- | Cette fonction "strcpy" permet la manipulation des chaînes de caractères. | ||
- | |||
- | strcpy(nom-de-la-variable-declaree,"nlle-valeur"); | ||
- | |||
- | |||
- | <code c> | ||
- | #include <stdio.h> | ||
- | #include <string.h> | ||
- | int main(void){ | ||
- | char nom[5]="toto"; | ||
- | strcpy(nom,"tata"); | ||
- | printf("%s\n",nom); | ||
- | } | ||
- | </code> | ||
- | <code> | ||
- | tata | ||
- | </code> | ||
- | |||
- | => Voir le fichier "string.h" pour voir quelle autre fonction elle contient. | ||
- | |||
- | ===fonction strcat=== | ||
- | |||
- | Elle permet de rajouter à la suite.\\ | ||
- | "cat", comme "concaténer" ! | ||
- | |||
- | <code c> | ||
- | #include <stdio.h> | ||
- | #include <string.h> | ||
- | int main(void){ | ||
- | char nom[15]="bonjour"; | ||
- | strcat(nom," toto"); | ||
- | printf("%s\n",nom); | ||
- | } | ||
- | </code> | ||
- | <code> | ||
- | bonjour toto | ||
- | </code> | ||
- | |||
- | ===for dans chaîne de caractères=== | ||
- | <code c> | ||
- | #include <stdio.h> | ||
- | #include <string.h> | ||
- | int main(void){ | ||
- | char nom[25]="Hello"; | ||
- | strcat(nom," Toto, are you ok ?"); | ||
- | int i; | ||
- | for(i=0;i!=25;i++){ | ||
- | printf("nom[%d]=%c\n",i,nom[i]); | ||
- | } | ||
- | printf("\n"); | ||
- | |||
- | } | ||
- | </code> | ||
- | |||
- | <code> | ||
- | nom[0]=H | ||
- | nom[1]=e | ||
- | nom[2]=l | ||
- | nom[3]=l | ||
- | nom[4]=o | ||
- | nom[5]= | ||
- | nom[6]=T | ||
- | nom[7]=o | ||
- | nom[8]=t | ||
- | nom[9]=o | ||
- | nom[10]=, | ||
- | nom[11]= | ||
- | nom[12]=a | ||
- | nom[13]=r | ||
- | nom[14]=e | ||
- | nom[15]= | ||
- | nom[16]=y | ||
- | nom[17]=o | ||
- | nom[18]=u | ||
- | nom[19]= | ||
- | nom[20]=o | ||
- | nom[21]=k | ||
- | nom[22]= | ||
- | nom[23]=? | ||
- | nom[24]= | ||
- | </code> | ||
- | > L'espace réservé peut-être plus large que les éléments. | ||
- | |||
- | ===Fonction strcmp=== | ||
- | |||
- | Elle permet de comparer. | ||
- | |||
- | <code c> | ||
- | #include <stdio.h> | ||
- | #include <string.h> | ||
- | int main(void){ | ||
- | char nom[10]="Hello b"; | ||
- | printf("%d\n",strcmp(nom,"Hello")); | ||
- | } | ||
- | </code> | ||
- | |||
- | <code> | ||
- | 32 | ||
- | </code> | ||
=====Les pointeurs ===== | =====Les pointeurs ===== | ||
====Définitions==== | ====Définitions==== | ||
Ligne 1556: | Ligne 1456: | ||
=====fonction bis ===== | =====fonction bis ===== | ||
+ | ====bibliothèque stdio.h ==== | ||
+ | ===fonction int et commande sizeof === | ||
+ | Un entier à une taille en octet. | ||
+ | <code c> | ||
+ | #include<stdio.h> | ||
+ | int main(void){ | ||
+ | printf("%d\n",sizeof(int)); | ||
+ | } | ||
+ | </code> | ||
+ | <code> | ||
+ | 4 | ||
+ | </code> | ||
+ | |||
+ | <note tip> | ||
+ | **Cela permet de comprendre l'utilisation de [[http://www.table-ascii.com/|la table ASCII]].**\\ | ||
+ | |||
+ | On pourrait faire : | ||
+ | <code c> | ||
+ | #include<stdio.h> | ||
+ | int main(void){ | ||
+ | printf("%d\n",sizeof(char)); | ||
+ | } | ||
+ | </code> | ||
+ | <code> | ||
+ | 1 | ||
+ | </code> | ||
+ | |||
+ | >1 octet = 8 bit | ||
+ | >8 bits permettent de coder 255 caractères différents. | ||
+ | >char peut donc "contenir la table ASCII qui va pour le code décimal des caractères alphanumériques (+des caractères spéciaux) qui va de 0 à 255. | ||
+ | |||
+ | <code c> | ||
+ | #include<stdio.h> | ||
+ | int main(void){ | ||
+ | int lettre=97; | ||
+ | printf("%c\n",lettre); | ||
+ | } | ||
+ | </code> | ||
+ | <code> | ||
+ | a | ||
+ | </code> | ||
+ | |||
+ | </note> | ||
+ | |||
===Pourquoi la fonction "main" renvoie-t-elle à un "int" ? === | ===Pourquoi la fonction "main" renvoie-t-elle à un "int" ? === | ||
Surtout qu'elle peut contenir des "char" ! | Surtout qu'elle peut contenir des "char" ! | ||
Ligne 1629: | Ligne 1573: | ||
</code> | </code> | ||
> 0 est le code de retour. | > 0 est le code de retour. | ||
+ | |||
+ | |||
+ | ====Bibliothèque string.h==== | ||
+ | ===fonction strcpy === | ||
+ | |||
+ | Elle permet d'utiliser la fonction **''strcpy''**. | ||
+ | Cette fonction "strcpy" permet la manipulation des chaînes de caractères. | ||
+ | |||
+ | strcpy(nom-de-la-variable-declaree,"nlle-valeur"); | ||
+ | |||
+ | |||
+ | <code c> | ||
+ | #include <stdio.h> | ||
+ | #include <string.h> | ||
+ | int main(void){ | ||
+ | char nom[5]="toto"; | ||
+ | strcpy(nom,"tata"); | ||
+ | printf("%s\n",nom); | ||
+ | } | ||
+ | </code> | ||
+ | <code> | ||
+ | tata | ||
+ | </code> | ||
+ | |||
+ | => Voir le fichier "string.h" pour voir quelle autre fonction il contient. | ||
+ | |||
+ | ===fonction strcat=== | ||
+ | |||
+ | Elle permet de rajouter à la suite.\\ | ||
+ | "cat", comme "concaténer" ! | ||
+ | |||
+ | <code c> | ||
+ | #include <stdio.h> | ||
+ | #include <string.h> | ||
+ | int main(void){ | ||
+ | char nom[15]="bonjour"; | ||
+ | strcat(nom," toto"); | ||
+ | printf("%s\n",nom); | ||
+ | } | ||
+ | </code> | ||
+ | <code> | ||
+ | bonjour toto | ||
+ | </code> | ||
+ | |||
+ | ===for dans chaîne de caractères=== | ||
+ | <code c> | ||
+ | #include <stdio.h> | ||
+ | #include <string.h> | ||
+ | int main(void){ | ||
+ | char nom[25]="Hello"; | ||
+ | strcat(nom," Toto, are you ok ?"); | ||
+ | int i; | ||
+ | for(i=0;i!=25;i++){ | ||
+ | printf("nom[%d]=%c\n",i,nom[i]); | ||
+ | } | ||
+ | printf("\n"); | ||
+ | |||
+ | } | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | nom[0]=H | ||
+ | nom[1]=e | ||
+ | nom[2]=l | ||
+ | nom[3]=l | ||
+ | nom[4]=o | ||
+ | nom[5]= | ||
+ | nom[6]=T | ||
+ | nom[7]=o | ||
+ | nom[8]=t | ||
+ | nom[9]=o | ||
+ | nom[10]=, | ||
+ | nom[11]= | ||
+ | nom[12]=a | ||
+ | nom[13]=r | ||
+ | nom[14]=e | ||
+ | nom[15]= | ||
+ | nom[16]=y | ||
+ | nom[17]=o | ||
+ | nom[18]=u | ||
+ | nom[19]= | ||
+ | nom[20]=o | ||
+ | nom[21]=k | ||
+ | nom[22]= | ||
+ | nom[23]=? | ||
+ | nom[24]= | ||
+ | </code> | ||
+ | > L'espace réservé peut-être plus large que les éléments. | ||
+ | |||
+ | ===Fonction strcmp=== | ||
+ | |||
+ | Elle permet de comparer. | ||
+ | |||
+ | <code c> | ||
+ | #include <stdio.h> | ||
+ | #include <string.h> | ||
+ | int main(void){ | ||
+ | char nom[10]="Hello b"; | ||
+ | printf("%d\n",strcmp(nom,"Hello")); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | 32 | ||
+ | </code> | ||
+ | |||
+ | =====Les structures ===== | ||
+ | Elles permettent d'utiliser plusieurs types de variable dans le "main". | ||
+ | |||
+ | ====Syntaxe ==== | ||
+ | ===Création d'une structure=== | ||
+ | * **Dans le "struct"** : \\ On crée une structure constituée de plusieurs types de variable afin de pouvoir tous les utiliser dans un seul "main".\\ __Pour ce faire__,\\ - on utilise la commande **''struct''**,\\ - on nomme la structure qu'on crée,\\ - enfin entre les accolades ouvrante et fermante, on annonce chacun des types de variables qui compose la structure.\\ Ne pas oublier le __point-virgule__ après l'accolade fermante de **''struct''**.\\ | ||
+ | * **Dans le "main"**:\\ on __associe__ à chaque variable déclarée, un __type de variable permis__ par la création de la structure.\\ **''var.type''** : Le point permet "d'associer" à "var", un type de variable annoncé dans le **''struct''**.\\ C'est **''var.type''** qu'on affecte __d'une valeur__ : **''var.type=valeur''**.\\ C'est donc **''var.type''** qui permet d'__appeler la valeur__ qu'on lui a affecté : **''("%type",var.type); ''**. | ||
+ | |||
+ | <code c> | ||
+ | #include<stdio.h> | ||
+ | #include<string.h> | ||
+ | struct nom-structure{ | ||
+ | type-chaine; | ||
+ | type-caractère[n]; | ||
+ | type-entier; | ||
+ | }; | ||
+ | int main(void){ | ||
+ | struct nom-structure var | ||
+ | strcpy(var.type-chaine,"chaine de caractère"); | ||
+ | var.type-caractère='c'; | ||
+ | var.type-entier=n; | ||
+ | |||
+ | printf("%s",var.type-chaine) | ||
+ | printf("%c",var.type-caractère) | ||
+ | printf("%d",var.type-entier) | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ====Exemple ==== | ||
+ | |||
+ | <code c> | ||
+ | #include<stdio.h> | ||
+ | #include<string.h> | ||
+ | struct earthborn{ | ||
+ | char sex; | ||
+ | char name[20]; | ||
+ | int age; | ||
+ | }; | ||
+ | int main(void){ | ||
+ | struct earthborn person1; | ||
+ | person1.age=78; | ||
+ | person1.sex='M'; | ||
+ | strcpy(person1.name,"Paul Dupont"); | ||
+ | printf("age:%d\t sex:%c\t name:%s\n",person1.age,person1.sex,person1.name); | ||
+ | struct earthborn person2; | ||
+ | person2.age=84; | ||
+ | person2.sex='F'; | ||
+ | strcpy(person2.name,"Agath Montsoirie"); | ||
+ | printf("age:%d\t sex:%c\t name:%s\n",person2.age,person2.sex,person2.name); | ||
+ | } | ||
+ | </code> | ||
+ | <code> | ||
+ | age:78 sex:M name:Paul Dupont | ||
+ | age:84 sex:F name:Agath Montsoirie | ||
+ | </code> |