如何从C字符串中取第一个字母?

时间:2013-10-21 05:24:46

标签: c string variables char scanf

我想从我的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变量中。

6 个答案:

答案 0 :(得分:3)

由于字符串是字符数组,您需要从数组中获取第一个元素:

char firstname_initial;
firstname_initial = firstname[0]

另请注意,由于lastnamefirstname是缓冲区,因此您无需在scanf中传递指向它们的指针:

scanf( "%s", firstname );
scanf( "%s", lastname );

最后一件事 - scanf是一个危险的功能,你不应该使用它。

答案 1 :(得分:3)

假设用户输入:

Michael

响应第一个提示。 %c格式读取M; %s格式读取ichael而无需获取任何新数据。

此外,您不应该传递&firstname&lastname;您应该只将firstnamelastname传递给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'只是为了稍后在应用程序中进行测试