Maison > Article > développement back-end > Comment saisir un tableau en langage C ?
En langage C, il existe deux fonctions qui permettent aux utilisateurs de saisir des données de tableau à partir du clavier, ce sont gets()
et scanf()
. scanf() saisit une chaîne de tableau via le caractère de contrôle de format %s. En plus des chaînes, il peut également saisir d'autres types de données ; gets() saisit directement une chaîne de tableau et ne peut saisir que des chaînes.
Cependant, il existe une différence entre scanf() et gets().
scanf()
Lors de la lecture d'une chaîne, elle est séparée par des espaces Lorsqu'un espace est rencontré, la chaîne actuelle est considérée comme terminée, donc les chaînes contenant des espaces ne peuvent pas être lues.
gets()
considère les espaces comme faisant partie de la chaîne. La saisie de la chaîne est considérée comme se terminant uniquement lorsque la touche Entrée est rencontrée. Par conséquent, quel que soit le nombre d'espaces saisis, tant que la touche Entrée est enfoncée. la touche n'est pas enfoncée, gets () est une chaîne complète. En d’autres termes, gets() est utilisé pour lire une ligne entière de chaîne.
Par exemple :
#include <stdio.h> int main(){ char str1[30] = {0}; char str2[30] = {0}; char str3[30] = {0}; //gets() 用法 printf("Input a string: "); gets(str1); //scanf() 用法 printf("Input a string: "); scanf("%s", str2); scanf("%s", str3); //分别输出 printf("\nstr1: %s\n", str1); printf("str2: %s\n", str2); printf("str3: %s\n", str3); return 0; }
Résultat d'exécution :
Input a string: C C++ Java Python Input a string: PHP JavaScript str1: C C++ Java Python str2: PHP str3: JavaScript
La première chaîne d'entrée est entièrement lue par gets() et stockée dans str1. La première moitié de la deuxième chaîne d'entrée est lue par le premier scanf() et stockée dans str2, et la seconde moitié est lue par le deuxième scanf() et stockée dans str3.
Notez que scanf() a besoin de l'adresse des données lors de la lecture des données. Celle-ci est constante, donc pour les variables de types int, char, float et autres, vous devez ajouter & devant pour obtenir leurs adresses. Mais dans ce code, nous avons seulement donné le nom de la chaîne, mais n'avons pas ajouté & devant. Pourquoi est-ce ? Étant donné que les noms de chaînes ou de tableaux sont généralement convertis en adresses lors de leur utilisation, l'ajout de & n'est pas nécessaire et peut même conduire à des erreurs.
En ce qui concerne les connaissances acquises jusqu'à présent, int, char, float et autres types de variables doivent être précédés de & lorsqu'ils sont utilisés dans scanf(), tandis que les tableaux ou les chaînes n'ont pas besoin d'être ajoutés devant lorsqu'ils sont utilisés dans scanf() lui-même sera converti en adresse. Les lecteurs doivent garder cela à l’esprit.
En ce qui concerne les détails de la conversion des noms de tableaux (noms de chaînes) et des adresses, et quand les noms de tableaux seront convertis en adresses.
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!