5

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

4

6 回答 6

4

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

char firstname_initial;
firstname_initial = firstname[0]

另请注意,由于lastnamefirstname是缓冲区,因此您不需要将指针传递给它们scanf

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

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

于 2013-10-21T05:29:00.837 回答
3

假设用户类型:

Michael

响应第一个提示。%c格式为M; 该%s格式ichael无需费心获取任何新数据即可读取。

此外,您不应该通过&firstname&lastname; 你应该通过 justfirstnamelastnameto scanf()。区别在于类型;使用&符号,您传递的 achar (*)[256]与预期的char *不同scanf()。你侥幸逃脱,但“侥幸逃脱”是有效术语。

对这两个调用使用一种%s格式(或者更好的格式)。然后传递和到。您可能想考虑在第一个字母上使用from ,也可能在姓氏上使用。%255sscanf()firstname[0]lastnameprintf()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;
}

它以一种或另一种方式避免了很多问题。它并非完全万无一失,但大多数人不会遇到问题。

于 2013-10-21T05:34:01.490 回答
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;
}
于 2013-10-21T05:56:51.697 回答
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);
于 2013-10-21T06:00:05.947 回答
0

假设预期输入:

fname = Batman
lname = Joker

预期输出:

Your school.edu e-mail address is: 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;
}
于 2013-10-21T07:48:58.897 回答
0

从c字符串复制第一个字符

char extractedchar = '0';
extractedchar=myoldstring[0];

注意:char '0' 只是为了稍后在应用程序中测试

于 2018-08-19T18:16:30.203 回答