2016-11-01 2 views
0

Zum Kombinieren von Vor-, Mittel- und Nachnamen einer Person.Keine Ausgabe beim Drucken nach dem Kombinieren von Zeichenfolgen

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!='\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); 

} 

Dies ist der Code

der Compiler zur Laufzeit nichts zeigt

ich den Fehler nicht finden können, mir helfen.

ist es eine Schleife, die diese Unendlichkeit oder irgendeine logische Fehlfunktion fortsetzt.

Antwort

3

Alle Loops sind unendlich:

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

Zustand first_name!='\0' immer true ist. Sie sollten für first_name[i] != '\0' überprüfen:

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

By the way, Strings zu kopieren, es ist besser strcpy Funktion zu verwenden.

+0

Er sollte 'strncpy' verwenden, da die Kapazität von' name' streng auf 30 Zeichen begrenzt ist. Verwende nur 'strcpy', wenn du weißt, dass du keine Grenzen überschreiten kannst (was selten der Fall ist). – UniversE

+0

@UniversE Ja oder 'strcpy_s' (seit C11). Ich habe den Link zu all diesen Funktionen in meiner Antwort. – Nikita

+1

Danke, ich weiß nicht, wie ich einen so erbärmlichen Fehler nicht finden konnte. –

1

Cleaner Ansatz mit Zeigern und Speichern von Eingaben in einem Array.

#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

Ich weiß nicht viel über Zeiger Ich werde es assoon, wie ich sie lernen –

+0

das ist das nächste Thema für mich nach Strings. –

1

hier ist der richtige Code, Zeichen korrekt, wenn Ihr Problem löst.

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

} 
Verwandte Themen