[英]Print Out Name In Specific Way
我必須編寫一個代碼,打印出第一個姓氏,如下所示:Smith, A.
到目前為止,我已經嘗試了各種技術,並且不小心創建了一個無限的“for”循環,我相信,盡管我不是 100% 確定我是如何做到的。 這是專門針對 C 的,我對這門語言比較陌生,盡管閱讀了教科書,但對字符在數組中的工作方式並沒有很好的理解。 這可能是一個我想太多的簡單問題。 這是我到目前為止所寫的,不包括代碼的不必要方面(即定義)
更新代碼
int main(void)
{
char name, letter;
char fname[MAX], lname[MAX];
int countf, countl, i, j;
printf("Enter a first and last name: ");
countf = 0;
countl = 0;
while ((name = getchar()) != ' ') {
fname[countf++] = name;
}
while ((name = getchar()) != '\n') {
lname[countl++] = name;
}
for(i=0;i < sizeof(lname);i++) {
putchar(lname[i]);
}
printf(", ");
putchar(fname[0]);
printf(".");
return 0;
}
我仍然有一些隨機和不必要的變量。 當前輸出是史密斯(符號)t(符號)~(兩個符號),A。”我不知道如何擺脫毛刺
您必須停止在有效數據的末尾而不是數組的末尾輸出姓氏:
for( i = 0; i < countl; i++ )
// ^^^^^^
這修復了您的代碼,但您有點把問題復雜化了。 當您只需要存儲第一個字母時,您不必要地存儲輸入。 然后,您可以簡單地丟棄名字的其余部分,並在最終輸出存儲的第一個字母之前直接輸出姓氏 - 因此:
int main( void )
{
printf( "Enter a first and last name: " );
// Keep first letter to output last.
char letter = getchar() ;
// Discard the rest of the first name
while( getchar() != ' ' )
{
// Do nothing until SPACE
}
// Output the last name
int namech = 0 ;
while( (namech = getchar()) != '\n' )
{
putchar( namech ) ;
}
printf( ", " );
// Output the first letter
putchar( letter ) ;
printf( "." );
return 0;
}
這具有不受任何緩沖區溢出問題影響的獨特優勢 - 因為沒有緩沖區。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.