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

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

藏色散人
藏色散人original
2019-03-25 15:00:332872parcourir

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; 
}

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

输入: Geeks for Geeks
输出: Geeks

输入: Computer science
输出: Computer

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; 
}

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

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

输入: Computer science
输出: Computer science

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; 
}

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

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!

Déclaration:
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