2016-11-01 2 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); 

} 

이 런타임 컴파일러는 아무것도

내가 도와, 실수를 찾을 수를 보여줍니다

코드를입니다.

일부 무한 루프 또는 일부 논리 misktake가 계속됩니다.

답변

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

'name'의 용량은 30 자로 제한되어 있으므로'strncpy'를 사용해야합니다. 제한을 초과 할 수 없다는 것을 안다면'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); 

}