我想从我的firstname字符串变量中取第一个字母,并将其添加到lastname变量的第二个字母。
到目前为止,我的计划是:
#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%s2@school.edu",firstname,lastname);
return 0;
}
但是,我想让我的代码获取第一个首字母(名字的第一个字母)并将其存储到firstname变量中。
答案 0 :(得分:3)
由于字符串是字符数组,您需要从数组中获取第一个元素:
char firstname_initial;
firstname_initial = firstname[0]
另请注意,由于lastname
和firstname
是缓冲区,因此您无需在scanf
中传递指向它们的指针:
scanf( "%s", firstname );
scanf( "%s", lastname );
最后一件事 - scanf
是一个危险的功能,你不应该使用它。
答案 1 :(得分:3)
假设用户输入:
Michael
响应第一个提示。 %c
格式读取M
; %s
格式读取ichael
而无需获取任何新数据。
此外,您不应该传递&firstname
或&lastname
;您应该只将firstname
和lastname
传递给scanf()
。区别在于类型;使用&符号,您传递的char (*)[256]
与char *
期望的scanf()
不同。你逃脱了它,但“逃避它”是一个有效的术语。
使用%s
格式(或更好,%255s
格式)进行两次scanf()
调用。然后将firstname[0]
和lastname
传递给printf()
。您可能想要考虑在第一个字母上使用tolower()
<ctype.h>
,也可以考虑使用姓氏。
这是一个合理的近似程序:
#include <stdio.h>
int main(void)
{
char firstname[256];
char lastname[256];
printf("What's your first name? ");
if (scanf("%255s", firstname) != 1)
return 1;
printf("What's your last name? ");
if (scanf("%255s", lastname) != 1)
return 1;
printf("Your school.edu e-mail address is: %c%s2@school.edu\n",
firstname[0], lastname);
return 0;
}
它以某种方式避免了很多问题。它并非完全万无一失,但大多数人都不会遇到问题。
答案 2 :(得分:0)
#include <stdio.h>
#include<string.h>
main() {
char firstname [256];
char lastname [256];
char str [50];
printf("What's your first name?: ");
scanf("%s",firstname);
printf("What is your last name? ");
scanf("%s",lastname);
str = strcpy(str, firstname[0]);
str = strcpy(str,lastname[1]);
printf("\nYour school.edu e-mail address is: %s2@school.edu",str);
return 0;
}
答案 3 :(得分:0)
我认为您希望变量 firstname 仅存储初始值。 所以名字就像字符串一样。
firstname[1] = '\0'; //mark the end of string on second character
printf("\nYour school.edu e-mail address is: %s%s2@school.edu",firstname,lastname);
答案 4 :(得分:0)
假设预期输入:: fname =蝙蝠侠 lname = Joker
预期产量:: 您的school.edu电子邮件地址是:BJBker2@school.edu
试试这个::
void main( void )
{
char fname = 0 ;
char lname[256] = {0} ;
printf("Enter firstname\n");
scanf("%c", &fname);
printf("Enter lastname\n");
scanf("%s", lname);
lname[1] = fname ;
printf("Your school.edu e-mail address is: %c%s2@school.edu\n", fname, lname);
return;
}
答案 5 :(得分:0)
从c字符串中复制第一个字符
char extractedchar = '0';
extractedchar=myoldstring[0];
注意:char'0'只是为了稍后在应用程序中进行测试