Comment faire pour imprimer correctement entier et chaîne dans c?
J'ai code suivant:
char *s1, *s2;
char str[10];
printf("type a string: ");
scanf("%s", str);
s1 = &str[0];
s2 = &str[2];
printf("%s\n", s1);
printf("%s\n", s2);
Lorsque j'exécute le code, et l'entrée "1" comme suit:
type a string: A 1
J'ai obtenu le résultat suivant:
A
�<�
Je suis en train de lire le premier caractère de la chaîne et de la troisième personnage comme un entier, et ensuite imprimer ceux sur l'écran. Le premier caractère fonctionne toujours, mais l'écran est juste l'affichage aléatoire fourre par la suite.... Comment dois-je y remédier?
Grâce
source d'informationauteur user1420474
Vous devez vous connecter pour publier un commentaire.
Vous êtes sur la bonne voie. Voici une version corrigée:
Parlons à travers les changements:
n
) pour stocker votre numéro descanf
à lire en premier une chaîne de caractères, puis un certain nombre (%d
signifie le numéro, comme vous le saviez déjà à partir de votreprintf
C'est à peu près tout là est à lui. Votre code est un peu dangereux, encore, car n'importe quel utilisateur d'entrée de plus de 9 caractères débordement
str
et démarrer le piétinement de la pile.scanf("%s",str)
analyse uniquement jusqu'à ce qu'il trouve un caractère d'espacement. Avec l'entrée"A 1"
il va scanner uniquement le premier caractère, doncs2
points à la poubelle qui est arrivé à être dansstr
depuis que le tableau n'était pas initialisée.Essayer ce code, mon ami...