Concepts d'E / S de base en C

Comment effectuer une entrée / sortie en utilisant printf et scanf en C

C est un petit langage, et le «noyau» deCn'inclut aucune fonctionnalité d'entrée / sortie (E / S).

Ce n'est pas quelque chose d'unique à C, bien sûr. Il est courant que le noyau du langage soit indépendant des E / S.

Dans le cas de C, les entrées / sorties nous sont fournies par la bibliothèque standard C via un ensemble de fonctions définies dans lestdio.hEn tête de fichier.

Vous pouvez importer cette bibliothèque en utilisant:

#include <stdio.h>

au-dessus de votre fichier C.

Cette bibliothèque nous offre, parmi de nombreuses autres fonctions:

  • printf()
  • scanf()
  • sscanf()
  • fgets()
  • fprintf()

Avant de décrire ce que font ces fonctions, je veux prendre une minute pour en parlerFlux d'E / S.

Nous avons 3 types de flux d'E / S en C:

  • stdin(entrée standard)
  • stdout(sortie standard)
  • stderr(erreur standard)

Avec les fonctions d'E / S, nous travaillons toujours avec des flux. Un flux est une interface de haut niveau qui peut représenter un périphérique ou un fichier. Du point de vue C, nous n'avons aucune différence de lecture à partir d'un fichier ou de lecture à partir de la ligne de commande: c'est un flux d'E / S dans tous les cas.

C'est une chose à garder à l'esprit.

Certaines fonctions sont conçues pour fonctionner avec un flux spécifique, commeprintf(), que nous utilisons pour imprimer des caractères surstdout. Utiliser son homologue plus généralfprintf(), nous pouvons spécifier le flux dans lequel écrire.

Depuis que j'ai commencé à parler deprintf(), présentons-le maintenant.

printf()

printf()est l'une des premières fonctions que vous utiliserez lors de l'apprentissage de la programmation C.

Dans sa forme d'utilisation la plus simple, vous lui passez une chaîne littérale:

printf("hey!");

et le programme imprimera le contenu de la chaîne à l'écran.

Vous pouvez imprimer la valeur d'une variable, et c'est un peu délicat car vous devez ajouter un caractère spécial, un espace réservé, qui change en fonction du type de la variable. Par exemple, nous utilisons%dpour un chiffre entier décimal signé:

int age = 37;

printf(“My age is %d”, age);

Nous pouvons imprimer plus d'une variable en utilisant des virgules:

int age_yesterday = 36;
int age_today = 37;

printf(“Yesterday my age was %d and today is %d”, age_yesterday, age_today);

Il existe d'autres spécificateurs de format comme%d:

  • %cpour un caractère
  • %spour une chaîne
  • %fpour les nombres à virgule flottante
  • %ppour les pointeurs

et beaucoup plus.

Nous pouvons utiliser des caractères d'échappement dansprintf(), aimer\nque nous pouvons utiliser pour que la sortie crée une nouvelle ligne.

scanf()

printf()est utilisé comme fonction de sortie. Je veux introduire une fonction d'entrée maintenant, afin que nous puissions dire que nous pouvons faire tout le truc d'E / S:scanf().

Cette fonction est utilisée pour obtenir une valeur de l'utilisateur exécutant le programme, à partir de la ligne de commande.

Nous devons d'abord définir une variable qui contiendra la valeur que nous obtenons de l'entrée:

int age;

Puis nous appelonsscanf()avec 2 arguments: le format (type) de la variable, et l'adresse de la variable:

scanf("%d", &age);

Si nous voulons obtenir une chaîne en entrée, rappelez-vous qu'un nom de chaîne est un pointeur vers le premier caractère, vous n'avez donc pas besoin du&caractère devant lui:

char name[20];
scanf("%s", name);

Voici un petit programme qui utilise les deuxprintf()etscanf():

#include <stdio.h>

int main(void) {
  char name[20];
  printf("Enter your name: ");
  scanf("%s", name);
  printf("you entered %s", name);
}

Téléchargez mon gratuitManuel C


Plus de tutoriels clang: