簡體   English   中英

如何從C字符串中取第一個字母?

[英]How to take first letter from C string?

我想從我的名字字符串變量中取出第一個字母並將其添加到姓氏變量的第二個字母。

到目前為止我的程序是:

#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 變量中。

由於字符串是字符數組,您需要從數組中取出第一個元素:

char firstname_initial;
firstname_initial = firstname[0]

另請注意,由於lastnamefirstname是緩沖區,因此您無需在scanf傳遞指向它們的指針:

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

最后一件事 - scanf是一個危險的函數,你不應該使用它。

假設用戶類型:

Michael

響應第一個提示。 %c格式讀取M ; %s格式讀取ichael而不費心去獲取任何新數據。

此外,您不應該傳遞&firstname&lastname ; 您應該只將firstnamelastname傳遞給scanf() 區別在於類型; 使用&符號,您傳遞的char (*)[256]scanf()期望的char * 你可以僥幸逃脫,但“僥幸逃脫”是有效術語。

對兩次scanf()調用使用%s格式(或者更好的%255s格式)。 然后將firstname[0]lastname傳遞給printf() 您可能想考慮在<ctype.h>的第一個字母上使用tolower() ,也可能在姓氏上使用。

這是一個好的程序的合理近似:

#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;
}

它以一種或另一種方式避免了很多問題。 它並非完全萬無一失,但大多數人不會遇到問題。

#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;
}

我認為您希望變量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);

假設預期輸入:

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;
}

從 c 字符串復制第一個字符

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

注意:字符“0”只是為了稍后在應用程序中進行測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM