2016-11-01 78 views
0

合併人物的名字,姓氏和名字。合併字符串後打印時未得到任何輸出

INT主要()

{ 

    int i,j,k; 

    char first_name[11]="Gursheesh"; 

    char middle_name[10]="Singh"; 

    char last_name[10]="Chawla"; 

    char name[30]; 

    for(i=0;first_name!='\0';i++) 

    { 

    name[i]=first_name[i]; 

    } 

    name[i]=' '; 

    i++; 

    for(j=0;middle_name!='\0';j++) 

    { 

    name[i+j]=middle_name[j]; 

    } 

    name[i+j]=' '; 

    j++; 

    for(k=0;last_name!='\0';k++) 

    { 

    name[i+j+k]=last_name[k]; 

    } 

    name[i+j+k]='\0'; 

    printf("%s",name); 

} 

這是代碼

在運行時編譯器不會顯示任何

我不能發現其中的錯誤,幫助我。

它是否有一些循環繼續這種無限或某種邏輯錯誤。

回答

3

你所有的循環是無限的:

for(i=0;first_name!='\0';i++) 

條件first_name!='\0'總是true。您應該檢查first_name[i] != '\0'

for(i=0; first_name[i] != '\0'; i++) 

順便說一句,複製字符串,最好使用strcpy功能。

+0

他應該使用'strncpy',因爲'name'的容量嚴格限制爲30個字符。只有使用'strcpy',如果你知道你不能超出限制(這種情況很少)。 – UniversE

+0

@UniversE是或'strcpy_s'(自C11開始)。我在我的答案中鏈接了所有這些功能。 – Nikita

+1

謝謝你我不知道我是如何找不到這樣一個可憐的錯誤。 –

1

使用指針並將輸入存儲在數組中的清除方法。

#include <stdio.h> 

int main (void) 
{ 
    char result[30]; 
    char *pntResult = result; 
    char *appendStr (char *dest, char *strToAppend); 

    char *name[3] = { "FirstName", "MiddleName", "LastName" }; 
    int i; 

    for (i = 0; i < 3; ++i) 
     pntResult = appendStr (pntResult, name[i]); 

    *(pntResult - 1) = '\0'; 

    printf ("%s\n", result); 

    return 0; 
} 

char *appendStr (char *dest, char *strToAppend) 
{ 
    while (*strToAppend) 
     *dest++ = *strToAppend++; 

    *dest++ = ' '; 

    return dest; 
} 
+0

我對指針的瞭解不多,當我學習指針時,我會對它進行討論 –

+0

這是我之後的下一個主題。 –

1

這裏是正確的代碼, 如果解決了您的問題,請更正標記。

#include <stdio.h> 
int main(){ 

    int i,j,k; 

    char first_name[11]="Gursheesh"; 

    char middle_name[10]="Singh";  

    char last_name[10]="Chawla"; 

    char name[30]; 

    for(i=0;first_name[i]!='\0';i++) 

    { 

    name[i]=first_name[i]; 

    }  

    name[i]=' '; 

    i++; 

    for(j=0;middle_name[j]!='\0';j++) 

    { 

    name[i+j]=middle_name[j]; 

    } 

    name[i+j]=' '; 

    j++; 

    for(k=0;last_name[k]!='\0';k++) 

    { 

    name[i+j+k]=last_name[k]; 

    } 

    name[i+j+k]='\0'; 

    printf("%s",name); 

} 
相關問題