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

} 
関連する問題