
FAQ CConsultez toutes les FAQ
Nombre d'auteurs : 28, nombre de questions : 175, création le 11 janvier 2013
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.
FAQ lues fois.
Table des matières
1. Information générale
(7)
1.1. A propos de cette FAQ
(3)
1.2. Documentation et outils
(4)
2. Les types et les variables
(35)
2.1. Généralités
(10)
- 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 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 ?
2.2. Structures et unions
(6)
- 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 pas forcément égale à la somme des tailles de ses champs ?
- Comment copier une structure ?
- Comment comparer deux structures ?
- Que signifie 'unsigned int i : <n>;' ?
2.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 / ?
- Quelle est la différence entre i++ et ++i ?
- Que font les opérateurs << et >> ?
- 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 ?
2.4. Les variables
(4)
2.5. Les nombres flottants
(3)
3. Pointeurs, tableaux et chaînes de caractères
(40)
3.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 * ?
3.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 ?
3.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 ?
3.4. L'allocation dynamique de mémoire
(5)
4. Les fonctions et les variables globales
(10)
4.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 ?
4.2. Les variables globales
(2)
5. Les entrées/sorties
(33)
5.1. Entrées/sorties en général
(5)
5.2. Gestion du clavier et de l'écran en mode console
(19)
- Pourquoi faut-il valider les caractères tapées 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' ?
- A quoi sert la fonction fflush ?
- Comment lire une ligne de manière securisé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 ?
5.3. Les fichiers et les dossiers
(7)
5.4. Réseau
(2)
6. Compilation et édition des liens
(18)
6.1. Le préprocesseur
(12)
- 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 peuvent 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__ ?
6.2. Techniques de compilation et d'édition de liens
(6)
7. Divers
(32)
7.1. Les nombres aléatoires
(4)
7.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 ?
7.3. Gestion des processus
(2)
7.4. Communication avec l'environnement
(5)
7.5. Gestion des erreurs
(3)
7.6. Bonnes pratiques
(3)
7.7. Divers
(5)
- Quelles options de compilation utiliser pour compiler avec gcc ?
- Que signifie l'underscore (_) en début du nom d'une fonction ou d'une macro, etc. ?
- Que signifie l'erreur : unresolved external symbol _WinMain@16 ?
- Que signifie le warning : no new line at end of file ?
- Pourquoi mon programme se lance et se termine immédiatement sans que je ne puisse rien voir ?
