logo

Différence entre printf() et scanf() en C

Introduction:

Imprimerf() et Scanf() sont des fonctions de bibliothèque intégrées au langage C qui effectuent entrée formatée et sortie formatée les fonctions. Ces fonctions sont définies et déclarées dans fichier d'en-tête stdio.h . Le 'F' dans imprimer et scanf représente 'formaté' . Donc les deux fonctions printf() et scanf() utilisez des codes dans une chaîne de format pour spécifier comment les valeurs de sortie ou d'entrée doivent être formatées. Nous devons importer le fichier d'en-tête à utiliser printf() et scanf() :

 #include 

Dans cet article, nous discuterons de la différence entre printf() et scanf(), mais avant de discuter des différences, nous devons connaître printf() et scanf() avec leur syntaxe et leurs exemples.

Imprimerf() :

Il impressions n'importe quoi entre double citation avec spécificateurs de format %c, %d,%f, etc., pour afficher la valeur d'une variable ou d'une constante et peut également avoir des caractères de séquence d'échappement comme NT pour nouvelle ligne, et onglet horizontal , respectivement.

json dans l'exemple json

Syntaxe:

 printf('(string) %format_specifier (string)',variable); 

Scanf() :

Il nous permet de lire une ou plusieurs valeurs saisies par l'utilisateur via le clavier de la console. Nous pouvons en placer autant spécificateurs de format autant d'entrées que nous voulons avec ou sans format.

Syntaxe:

 scanf(%format_specifier, &pointer_to_variable); 

Chaîne de spécificateur de format :

Dans le premier paramètre de imprimer et scanf , Nous passons formater la chaîne ou chaîne de spécificateur de format , et nous spécifions quel type de valeur l'utilisateur va saisir.

Type de données Conversion formater la chaîne
Entier Entier court %d ou %i
court non signé % dans
signé depuis longtemps % ld
longtemps non signé %lu
hexadécimal non signé % X
octal non signé %O
Réel flotter % f ou % g
double %lf
personnage signé %c
caractère non signé %c
chaîne %s

Par exemple, si un utilisateur saisit vingt comme entrée, comme vingt est un valeur entière décimale , nous spécifions toutes les valeurs entières décimales en C en utilisant le %d spécificateur de format . De la même manière, valeurs flottantes sont spécifiés à l'aide de %F .

Code de base pour Printf() et Scanf() :

Exemple 1:

 #include int main() { int a, b; int sum = 0, sub = 0, mul = 0; printf('Please enter the two values:'); /* Read input */ scanf('%d%d', &a, &b); sum = a+b; sub = a-b; mul = a*b; /* Print output */ printf('The sum = %d 
sub = %d 
mul = %d', sum, sub, mul); return 0; } 

Sortir:

 Please enter the two values:8 6 The sum = 14 sub = 2 mul = 48 

Explication:

Dans le programme ci-dessus, nous utilisons le scanf() pour lire les entrées de la console et les stocker dans des variables un B. Après cela, nous effectuons des opérations arithmétiques comme ajout , soustraction , et multiplication et stockez ensuite les résultats dans le trois nouvelles variables (Sum, Sub, Mul). Enfin, en utilisant le Fonction printf() , nous imprimons les résultats.

Exemple 2 : -

 #include int main() { int a; scanf('%d %d', &a); printf('Execution finished...'); return 0; } 

Dans le programme ci-dessus, scanf() lit deux entrées du programme même si nous transmettons une variable car nous avons spécifié deux spécificateurs de format . Rappelez-vous toujours, dans scanf()/printf() tous les spécificateurs de format que nous transmettons devrait être le même, sinon nous pourrions avoir des erreurs d'exécution inattendues.

Exemple 3 :

 int main() { int a, b; scanf('%d', &a, &b); printf('Execution finished...'); return 0; } 

Sortir:

chaîne java de concaténation
 5 Execution finished... 

Explication:

Dans le programme ci-dessus, scanf() ne lit qu'une seule entrée de l'utilisateur car nous avons spécifié uniquement un spécificateur de format . Donc de cet exemple, nous concluons qu'aucune des entrées ne sera prise en fonction du nombre de spécificateurs de format .

Exemple 4 :

 #include int main() { int a; scanf('%d', a); printf('Execution finished'); } 

Sortir:

 6 Segmentation fault 

Explication:

Dans le programme ci-dessus, nous transmettons la valeur d'une variable à scanf() au lieu de l'adresse variable. Cela conduira à un erreur d'exécution . Sous Linux, nous obtiendrons une erreur d’erreur de segmentation.

démarque avec images

Exemple 5 :

 #include int main() { int a = 10; int b = 20; printf('the value of a = %d, the value of b = %d', a, b); } 

Sortir:

 the value of a = 10, the value of b = 20 

Explication:

Dans le programme ci-dessus, lorsque imprimer analyse la chaîne de format, il remplacera le spécificateurs de format (%d) avec les valeurs réelles auxquelles nous transmettons printf() . c'est-à-dire que le premier spécificateur de format sera remplacé par la première valeur que nous transmettons printf(), et ainsi de suite.

Différences fondamentales entre Printf() et Scanf()

Quelques différences entre printf et scanf sont : -

    Fonction printf() envoie les données vers la sortie standard, c'est-à-dire vers la console. En revanche, le Fonction scanf() lit les données de l'entrée standard, c'est-à-dire les périphériques d'entrée printf() utilise rarement le pointeur dans quelques cas mais scanf() utilise toujours un pointeur pour attribuer une valeur à la variable donnée. printf() et scanf() les deux ont le même type de retour de entier . Le printf() renvoie le nombre de caractères qu'il a imprimés avec succès sur la console, alors que scanf() Retour 0,1 ou EOF basé sur le spécificateur de format fourni.