Comment utiliser correctement la fonction scanf en langage C
Introduction :
En langage C, la fonction scanf est l'une des fonctions de saisie couramment utilisées, qui permet aux utilisateurs de saisir des données à partir du clavier. Cependant, en raison de différences subtiles dans certaines fonctionnalités et dans l'utilisation de la fonction scanf, cela peut facilement causer des problèmes. Cet article expliquera comment utiliser correctement la fonction scanf et les précautions associées, et joindra des exemples de code spécifiques.
1. Utilisation de base de la fonction scanf :
L'utilisation de base de la fonction scanf est très simple. Elle utilise une chaîne de format comme paramètre, et la chaîne de format spécifie le type et le format des données d'entrée. Par exemple, « %d » signifie saisir un entier, « %f » signifie saisir un nombre à virgule flottante simple précision, « %s » signifie saisir une chaîne, et ainsi de suite.
Exemple de code 1 :
#include <stdio.h> int main() { int num; printf("请输入一个整数:"); scanf("%d", &num); // 输入一个整数 printf("您输入的整数是:%d ", num); return 0; }
2. Valeur de retour de la fonction scanf et problème de tampon :
la fonction scanf renvoie le nombre de données lues avec succès lorsque les données sont lues avec succès, et renvoie EOF si la lecture échoue. Il est important de noter que lorsque la lecture échoue, la fonction scanf laisse l'erreur dans le tampon d'entrée. Cela peut entraîner des opérations de saisie ultérieures produisant des résultats inattendus.
Exemple de code 2 :
#include <stdio.h> int main() { int num; char ch; printf("请输入一个整数和一个字符:"); scanf("%d", &num); // 输入一个整数 scanf(" %c", &ch); // 输入一个字符(注意前面的空格) printf("您输入的整数是:%d ", num); printf("您输入的字符是:%c ", ch); return 0; }
Il y a un espace devant la deuxième fonction scanf dans le code ci-dessus, le but est d'éliminer le caractère de nouvelle ligne laissé dans le tampon d'entrée par la fonction scanf précédente. Sinon, la deuxième fonction scanf lira le caractère de nouvelle ligne dans le tampon et produira des résultats incorrects.
3. Problèmes de chaîne de format dans la fonction scanf :
Soyez très prudent lorsque vous utilisez des chaînes de format. Des chaînes de format incorrectes peuvent provoquer un crash du programme ou produire des résultats incorrects.
Exemple de code 3 :
#include <stdio.h> int main() { int num1, num2; printf("请输入两个整数:"); scanf("%d%d", &num1, &num2); // 输入两个整数 printf("您输入的两个整数是:%d和%d ", num1, num2); return 0; }
La chaîne de format "%d%d" dans la première fonction scanf du code ci-dessus signifie lire deux entiers et les séparer par des espaces, des tabulations ou des nouvelles lignes. Si les deux entiers ne sont pas correctement séparés lors de la saisie, une erreur de saisie en résultera.
4. Problèmes de restriction d'entrée dans la fonction scanf :
La fonction scanf utilise par défaut un espace, une tabulation ou un caractère de nouvelle ligne comme terminateur d'entrée. Si vous devez contrôler la longueur de l'entrée, vous pouvez utiliser des modificateurs dans la chaîne de format.
Exemple de code 4 :
#include <stdio.h> int main() { char name[20]; printf("请输入您的名字(不超过20个字符):"); scanf("%19s", name); // 输入一个字符串,最多19个字符 printf("您的名字是:%s ", name); return 0; }
Le modificateur "%19s" dans le code ci-dessus signifie que jusqu'à 19 caractères peuvent être saisis pour éviter tout débordement. Notez que les indices du tableau commencent à 0, donc la longueur de "%19s" est de 19 au lieu de 20.
Conclusion :
Pour utiliser correctement la fonction scanf, vous devez faire attention aux problèmes de valeur de retour et de tampon, aux problèmes de chaîne de format et aux problèmes de limitation d'entrée. Dans la programmation réelle, veillez à suivre ces directives et à apporter les modifications appropriées si nécessaire. Ce n'est qu'en utilisant correctement la fonction scanf que nous pourrons mieux écrire des programmes en langage C robustes et de haute qualité.
Ce qui précède est une introduction sur la façon d'utiliser correctement la fonction scanf en langage C. J'espère que cela vous sera utile. Merci d'avoir lu!
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!