FAQ CConsultez toutes les FAQ
Nombre d'auteurs : 35, nombre de questions : 194, dernière mise à jour : 18 février 2018
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de www.developpez.com et de l'expérience personnelle des auteurs.
Je tiens à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes ; les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, lisez ceci .
Sur ce, je vous souhaite une bonne lecture.
- 1. À propos de cette FAQ (3)
-
2. Information générale
(9)
- 2.1. Documentation et outils (4)
- 2.2. Les nouveautés de C11 par rapport à C99 (5)
-
3. Les types et les variables
(37)
-
3.1. Généralités
(11)
- Quelle est la taille d'un char ?
- Quelle est la taille des différents types ?
- Que signifient signed et unsigned ?
- Quelle est la différence entre char, signed char et unsigned char ?
- Pourquoi mon compilateur ne connaît-il pas le type long long ?
- Quel est le rôle de l'opérateur sizeof ?
- Existe-t-il un type booléen en C ?
- Qu'est-ce que le type size_t ?
- Qu'est-ce que le type wchar_t ?
- Comment créer un synonyme d'un type existant ?
- Que signifie l'erreur « undefined reference to xxx » ou « symbol not found » ?
-
3.2. Structures et unions
(7)
- Comment créer un alias pour le nom d'une structure ?
- Quelle est la différence entre une structure et une union ?
- Pourquoi la taille d'une structure n'est-elle pas forcément égale à la somme des tailles de ses champs ?
- Comment copier une structure ?
- Comment comparer deux structures ?
- Que signifie 'unsigned int i : ;' ?
- Comment charger les données d'un fichier texte dans une structure ?
-
3.3. Les opérateurs
(12)
- Quelle est la différence entre = et == ?
- Pourquoi if (a = b) ne génère pas d'erreur de compilation ?
- Que signifie « x = (a == b) ? 5 : 10 » ?
- Comment calculer le reste d'une division entière ?
- Que fait exactement l'opérateur diviser / ?
- Quelle est la différence entre i++ et ++i ?
- Que font les opérateurs > ?
- Que signifie E1 & E2 ?
- Que signifie E1 | E2 ?
- Quelle est la différence entre (E1 && E2) et (E1 & E2) ?
- Comment est évaluée l'expression E1 && E2 ?
- Comment accéder à un bit d'une variable ?
- 3.4. Les variables (4)
- 3.5. Les nombres flottants (3)
-
3.1. Généralités
(11)
-
4. Pointeurs, tableaux et chaînes de caractères
(51)
-
4.1. Les pointeurs
(10)
- Qu'est-ce qu'un pointeur ?
- Quand utiliser les pointeurs ?
- Qu'est-ce que NULL ?
- Comment utiliser un pointeur sur une structure ?
- Quelle est la différence entre sizeof(struct data) et sizeof(struct data *) ?
- Comment déclarer un pointeur sur une fonction ?
- p et q pointent sur deux objets identiques mais (p == q) renvoie toujours faux ! Pourquoi ?
- Qu'est-ce que *p++ incrémente ?
- Quelle est la différence entre pointeurs constants et pointeurs sur constante ?
- Comment connaître le type d'une variable adressée par un pointeur void * ?
-
4.2. Les tableaux
(10)
- Que signifie 'int t[] = {10, 20};' ?
- Que signifie 'int t[10] = {10, 20};' ?
- Soit t un tableau. Quelle est la différence entre t, &t et &(t[0]) ?
- Soit t un tableau. Que signifie *(t + 3) ?
- Quel est le rôle de l'opérateur [] ?
- Comment déclarer et utiliser un tableau « à plusieurs dimensions » ?
- Que signifie 'int (*p)[4];' ?
- Comment déclarer et utiliser un tableau de pointeurs de fonctions ?
- Comment passer un tableau en paramètre à une fonction ?
- Comment copier un tableau ?
-
4.3. Les chaînes de caractères
(15)
- Qu'est-ce qu'une chaîne de caractères ?
- Qu'est-ce que le caractère NUL ?
- Pourquoi ce NUL est-il obligatoire en fin d'une chaîne ?
- Quelle est la différence entre 'a' et "a" ?
- Que signifie 'char s[21] = "Bonjour";' ?
- Que signifie 'char * p = "Bonjour";' ?
- Comment convertir une chaîne de caractères en minuscules ?
- Comment convertir une chaîne de caractères en majuscules?
- Comment convertir un nombre en chaîne de caractères ?
- Comment convertir une chaîne de caractères en nombre ?
- Comment concaténer deux chaînes de caractères ?
- Comment comparer 2 chaînes de caractères ?
- Pourquoi la comparaison avec une chaîne lue par fgets échoue toujours ?
- Comment créer un tableau de chaînes de caractères ?
- Quel est le rôle de \ dans une chaîne de caractères ?
-
4.4. L'allocation dynamique de mémoire
(7)
- Faut-il toujours libérer la mémoire allouée dynamiquement ?
- Que contient ma mémoire après son allocation ?
- Que vaut un pointeur après free() ?
- Comment connaître la taille d'un tableau dynamique ?
- Comment allouer dynamiquement un tableau à 2 dimensions ?
- Quelle est l’utilité de realloc ?
- Comment (bien) utiliser realloc ?
-
4.5. Les erreurs de segmentation
(9)
- Qu'est-ce qu'une erreur de segmentation, ou segfault ?
- Comment sont provoquées les erreurs de segmentation ?
- Pourquoi mon programme provoque-t-il une erreur de segmentation ?
- Que faire pour comprendre l'origine de l'erreur de segmentation ?
- Que faire pour détecter les erreurs liées aux accès (lecture ou écriture) mémoire ?
- Qu'est-ce qu'un pointeur invalide (non initialisé) ?
- Qu'est-ce qu'un dépassement de tableau ?
- Qu'est-ce qu'un débordement de pile ?
- Qu'est-ce qu'un pointeur invalide (pointeur référençant un espace mémoire n'étant plus valide) ?
-
4.1. Les pointeurs
(10)
-
5. Les fonctions et les variables globales
(10)
-
5.1. Les fonctions
(8)
- Qu'est-ce qu'un prototype ?
- Est-il possible de définir une fonction sans fournir le prototype ?
- Comment passer "une variable" à une fonction ?
- Comment créer une fonction qui retourne plus d'une valeur ?
- Comment créer une fonction qui retourne une chaîne de caractères ?
- Comment retourner un pointeur de fonction ?
- Comment définir une fonction acceptant un nombre d'arguments variable, comme printf() ?
- Combiner plusieurs options en un seul paramètre ?
- 5.2. Les variables globales (2)
-
5.1. Les fonctions
(8)
-
6. Les entrées/sorties
(33)
- 6.1. Entrées/sorties en général (5)
-
6.2. Gestion du clavier et de l'écran en mode console
(19)
- Pourquoi faut-il valider les caractères tapés par Entrée ?
- Qu'est-ce que le caractère '\n' ?
- Qu'est-ce que le caractère '\r' ?
- La touche Entrée envoie-t-elle le caractère '\r', '\n' ou '\r' suivi de '\n' ?
- À quoi sert la fonction fflush ?
- Comment lire une ligne de manière sécurisée ?
- Comment vider le buffer clavier ?
- Comment générer EOF avec le clavier ?
- Pourquoi ne faut-il pas utiliser fflush(stdin) pour vider le buffer clavier ?
- Qu'est-ce qu'un terminal en mode brut (UNIX) ?
- Comment faire passer un terminal en mode brut (UNIX) ?
- Comment faire pour lire un caractère sans attendre la frappe d'Entrée ?
- Comment intercepter une touche sans bloquer le programme (DOS/Windows) ?
- Comment simuler la fonction _kbhit sous UNIX ?
- Comment gérer les touches étendues (F1..F12, flèches) ?
- Comment se positionner dans une console ?
- Comment effacer l'écran ?
- Où trouver des fonctions portables de gestion du clavier et de l'écran ?
- Où trouver une bibliothèque de gestion graphique ?
- 6.3. Les fichiers et les dossiers (7)
- 6.4. Réseau (2)
-
7. Compilation et édition des liens
(22)
-
7.1. Le préprocesseur
(13)
- Qu'est-ce que le préprocesseur ?
- Que signifie #define N 10 ?
- Comment définir et utiliser une macro paramétrée ?
- Que signifie #define MYMACRO ?
- Comment savoir si une macro est définie ?
- Quels problèmes peut poser l'utilisation des macros ?
- Quel est le rôle de # dans la définition d'une macro ?
- Quel est le rôle de ## dans la définition d'une macro ?
- Que signifie #pragma ... ?
- Que signifie #error ... ?
- Peut-on utiliser sizeof dans un #if ?
- Pourquoi je n'arrive pas afficher la date courante avec __DATE__ ?
- Que signifie l'underscore (_) en début du nom d'une fonction ou d'une macro, etc. ?
- 7.2. Techniques de compilation et d'édition de liens (6)
-
7.1. Le préprocesseur
(13)
-
8. Divers
(29)
- 8.1. Les nombres aléatoires (4)
-
8.2. Gestion des dates et heures
(10)
- Qu'est-ce que l'heure système ?
- Qu'est-ce que l'heure locale ?
- Comment obtenir la date et l'heure courante ?
- Comment décomposer une date ?
- Comment formater une date sous un format spécifique ?
- Comment convertir une date en chaîne de caractères ?
- Comment soustraire deux dates ?
- Comment connaître l'heure système (Windows) ?
- Comment connaître l'heure locale (Windows) ?
- Comment chronométrer des temps d'exécution ?
- 8.3. Gestion des processus (2)
- 8.4. Communication avec l'environnement (5)
- 8.5. Gestion des erreurs (3)
- 8.6. Bonnes pratiques (3)
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.