Comment prendre la première lettre de la chaîne C?
Je veux prendre la première lettre de mon prénom variable de chaîne et l'ajouter à la deuxième lettre du nom de la variable.
Mon programme jusqu'à présent est:
#include <stdio.h>
main() {
char firstname [256];
char lastname [256];
printf("What's your first name?: ");
scanf("%c",&firstname);
printf("What is your last name? ");
scanf("%s",&lastname);
printf("\nYour school.edu e-mail address is: %c%[email protected]",firstname,lastname);
return 0;
}
Cependant, je voudrais pour mon code pour prendre la première initiale (la première lettre du prénom) et le stocker dans la variable firstname.
- Êtes-vous face à problème dans l'accès à un élément de tableau ou de les écraser dans un tableau existant?
- Pourquoi êtes-vous en ayant un tableau de 256 caractères pour "firstname" quand vous êtes uniquement intéressé et le stockage du premier caractère?
- Veuillez poster les attendus d'entrée et de sortie attendue.
Vous devez vous connecter pour publier un commentaire.
Comme des chaînes de caractères sont tableau de caractères, vous devez prendre le premier élément du tableau:
Remarque aussi que, comme
lastname
etfirstname
sont des tampons, vous n'avez pas besoin de passer un pointeur dansscanf
:Et une dernière chose -
scanf
il est dangereux de fonction et vous ne devriez pas l'utiliser.Supposons que l'utilisateur tape:
en réponse à la première invite. Le
%c
format lit leM
; la%s
format litichael
, sans se soucier d'obtenir de nouvelles données.Aussi, vous ne devriez pas être en train de passer
&firstname
ou&lastname
; vous devriez être en train de passer justefirstname
etlastname
àscanf()
. La différence réside dans le type; avec le commercial, vous êtes en passant unchar (*)[256]
qui n'est pas le même que lechar *
quescanf()
attend. Vous vous en sortir avec elle, mais "faire avec" est le terme fondamental.Utiliser un
%s
format (ou, mieux,%255s
format) pour les deuxscanf()
appels. Puis passerfirstname[0]
etlastname
àprintf()
. Vous voudrez peut-être penser à l'aide detolower()
de<ctype.h>
sur la première lettre, et peut-être sur le nom de famille aussi.C'est une approximation raisonnable pour un bon programme:
Il évite beaucoup de problèmes, d'une manière ou d'une autre. Il n'est pas complètement infaillible, mais la plupart des gens ne rencontrerez pas de problèmes avec elle.
firstname[0]
comme ça avecstrcpy()
. Vous aussi vous ne pouvez pas le faire aveclastname[1]
, et vous ne voulez probablement pas à le faire de toute façon (lastname
ou&lastname[0]
à la place). Vous avez alloué 50 octets pour le nom composé, mais 256 pour le nom de famille, ce qui pourrait conduire à des accidents.Je pense que vous voulez la variable prénom pour stocker uniquement la première.
De sorte que prénom agir comme chaîne de caractères.
En supposant d'entrée prévue::
fname = Batman
lname = Joker
Résultat Attendu::
Votre school.edu adresse e-mail est: [email protected]
Essayez ceci::
Copie premier char de la chaîne c
Remarque : le caractère '0' est juste là pour tester plus tard dans l'application