Maison > développement back-end > Tutoriel C#.Net > Différence entre scanf() et gets() en C (exemple de code)

Différence entre scanf() et gets() en C (exemple de code)

藏色散人
Libérer: 2019-03-25 15:00:33
original
2955 Les gens l'ont consulté

Différence entre scanf() et gets() en C (exemple de code)

Fonction scanf()

Elle est utilisée pour lire l'entrée (char, char) à partir de l'entrée standard (clavier ) chaîne, données numériques).

Il est utilisé pour lire l'entrée jusqu'à ce qu'un espace, un caractère de nouvelle ligne ou une fin de fichier (EOF) soit rencontré.

Par exemple, voir le code suivant :

#include <stdio.h> 
int main() 
{ 
    char str[20]; 
    printf("enter something\n"); 
    scanf("%s", str); 
    printf("you entered: %s\n", str); 
  
    return 0; 
}
Copier après la connexion

L'entrée ici sera fournie par l'utilisateur et la sortie sera la suivante :

输入: Geeks for Geeks
输出: Geeks

输入: Computer science
输出: Computer
Copier après la connexion

Fonction gets()

Elle est utilisée pour lire l'entrée à partir de l'entrée standard (clavier). Il est utilisé pour lire l'entrée jusqu'à ce qu'un caractère de nouvelle ligne ou une fin de fichier (EOF) soit rencontré.

#include <stdio.h> 
int main() 
{ 
    char str[20]; 
    printf("enter something\n"); 
    gets(str); 
    printf("you entered : %s\n", str); 
    return 0; 
}
Copier après la connexion

Ici, la saisie sera fournie par l'utilisateur comme suit

输入: Geeks for Geeks
输出: Geeks for Geeks

输入: Computer science
输出: Computer science
Copier après la connexion
Copier après la connexion

La principale différence entre eux est :

scanf( ) lit l'entrée jusqu'à ce qu'un espace, une nouvelle ligne ou une fin de fichier (EOF) soit rencontré, alors que gets() lit l'entrée jusqu'à ce qu'une nouvelle ligne ou une fin de fichier (EOF) soit rencontrée, gets() n'arrête pas de lire l'entrée lorsqu'un l'espace est rencontré mais doit traiter les espaces comme des chaînes. scanf peut lire plusieurs valeurs de différents types de données, tandis que gets() ne peut obtenir que des données de chaîne.

La différence peut être affichée sous forme de tableau comme suit :

SCANF()GETS()
当scanf()用于读取字符串输入时,它会在遇到空格,换行符或文件结束时停止读取当gets()用于读取输入时,它会在遇到换行符或End Of File时停止读取输入。
当它将空格视为字符串时,它不会停止读取遇到空格的输入。
它用于读取任何数据类型的输入它仅用于字符串输入。

Comment lire la phrase complète de l'utilisateur à l'aide de scanf()

En fait, nous pouvons utiliser scanf() pour lire la chaîne entière. Par exemple, nous pouvons utiliser %[^n]s dans scanf() pour lire la chaîne entière.

#include <stdio.h> 
  
int main() 
{ 
  
    char str[20]; 
    printf("Enter something\n"); 
  
    // Here \n indicates that take the input 
    // until newline is encountered 
    scanf("%[^\n]s", str);  
    printf("%s", str); 
    return 0; 
}
Copier après la connexion

Le code ci-dessus lit la chaîne jusqu'à ce qu'elle rencontre un caractère de nouvelle ligne.

Exemple :

输入: Geeks for Geeks
输出: Geeks for Geeks

输入: Computer science
输出: Computer science
Copier après la connexion
Copier après la connexion

Recommandations associées : "Tutoriel C"

Cet article concerne scanf() et gets() en C. les différences entre eux sont introduites, j'espère que cela sera utile aux amis dans le besoin !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
c
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal