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 Prochaine révision Les deux révisions suivantes | ||
utilisateurs:hypathie:tutos:memo-c [19/08/2014 10:14] Hypathie [Les pointeurs] |
utilisateurs:hypathie:tutos:memo-c [19/08/2014 16:21] Hypathie [Fonctions] |
||
---|---|---|---|
Ligne 1054: | Ligne 1054: | ||
=====Fonctions ===== | =====Fonctions ===== | ||
- | ====Explications ==== | + | ====Fonction "main" et fonction utilisateur ==== |
* Reprenons le code de base : | * Reprenons le code de base : | ||
<code c> | <code c> | ||
Ligne 1097: | Ligne 1098: | ||
> On peut aussi inscrire : **''void bonjour(void){''**. | > On peut aussi inscrire : **''void bonjour(void){''**. | ||
+ | <note tip> | ||
+ | <code c> | ||
+ | #include <stdio.h> | ||
+ | </code> | ||
+ | > ce qui commence par un "#" sont des instructions pour le compilateur | ||
+ | > "include" : inclure -> inclure le fichier "stdio.h" | ||
+ | > c'est un fichier qui contient des commandes | ||
+ | > une commande comme printf se trouve dans le fichier "stdio.h" | ||
+ | </note> | ||
====Passer des éléments à une fonction ==== | ====Passer des éléments à une fonction ==== | ||
===explications=== | ===explications=== | ||
Ligne 1234: | Ligne 1243: | ||
</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. | ||
- | =====Les pointeurs ==== | + | 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> | ||
+ | 32 | ||
+ | <code> | ||
+ | |||
+ | </code> | ||
+ | =====Les pointeurs ===== | ||
====Définitions==== | ====Définitions==== | ||
Ligne 1439: | Ligne 1549: | ||
char tab[27]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; | char tab[27]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; | ||
printf("%c\t %c\t %c\t %c\t %c\t %c\n",tab[0],tab[5],tab[9],tab[15],tab[21],tab[26]); | printf("%c\t %c\t %c\t %c\t %c\t %c\n",tab[0],tab[5],tab[9],tab[15],tab[21],tab[26]); | ||
- | *(tab+0)='A'; | + | *(tab+0)='A'; |
- | tab[5]='E'; | + | tab[5]='E'; |
printf("%c\t %c\n",tab[0],*(tab+5)); | printf("%c\t %c\n",tab[0],*(tab+5)); | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | =====fonction bis ===== | ||
+ | ===Pourquoi la fonction "main" renvoie-t-elle à un "int" ? === | ||
+ | Surtout qu'elle peut contenir des "char" ! | ||
+ | Rappel : "void" : quand la fonction ne retourne rien. | ||
+ | |||
+ | <code c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | int somme(int x,int y){ | ||
+ | int result; | ||
+ | result=x+y; | ||
+ | return result; | ||
+ | } | ||
+ | int main(void){ | ||
+ | int addition; | ||
+ | addition=somme(2,3); | ||
+ | printf("%d\n",addition); | ||
+ | } | ||
+ | </code> | ||
+ | <code> | ||
+ | 5 | ||
+ | </code> | ||
+ | |||
+ | * ou en raccourci : | ||
+ | <code c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | int somme(int x,int y){ | ||
+ | int result; | ||
+ | result=x+y; | ||
+ | return result; | ||
+ | } | ||
+ | void main(void){ | ||
+ | int addition; | ||
+ | int var1=2; | ||
+ | int var2=3; | ||
+ | addition=somme(var1,var2); | ||
+ | printf("%d\n",addition); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | >On affecte la variable "addition" de la fonction "somme" car elle a un "return". | ||
+ | > On met **''int main(void){''** car il possible de faire renvoyer des information par la fonction "main". | ||
+ | > Quand elle ne renvoie rien on peut aussi mettre **''void main(void){''**. | ||
+ | |||
+ | >**C'est au système d'exploitation que le "int" renvoie des informations**. | ||
+ | |||
+ | ===ce servir du "int" dans la fonction "main"=== | ||
+ | <code c> | ||
+ | #include <stdio.h> | ||
+ | |||
+ | int somme(int x,int y){ | ||
+ | int result; | ||
+ | result=x+y; | ||
+ | return result; | ||
+ | } | ||
+ | int main(void){ | ||
+ | int addition; | ||
+ | int var1=2; | ||
+ | int var2=3; | ||
+ | addition=somme(var1,var2); | ||
+ | printf("%d\n",addition); | ||
+ | return 0; | ||
+ | } | ||
+ | </code> | ||
+ | <code user> | ||
+ | gcc -o fct.x fct.c; ./fct.x; echo $? | ||
+ | </code> | ||
+ | <code> | ||
+ | 5 | ||
+ | 0 | ||
+ | </code> | ||
+ | > 0 est le code de retour. |