Leerzeichen im char array in c
wie fügen Sie ein Leerzeichen zwischen zwei Wörter im array ,erhalte ich zwei Wörter aus der Nutzer seinen Vornamen ,seinen Nachnamen, was ich brauche, es zu speichern, die zwei arrays in einem array zwischen Ihnen einen Raum
hier ist mein code
#include <stdio.h>
int main()
{
char first_name[15], last_name[15] ,full_name[32];
int i=0,i2,first_name_length,last_name_length;
printf("enter your first name\n");
first_name_length = scanf("%s",first_name);
printf("enter your last name\n");
last_name_length = scanf("%s",last_name);
for(i2 = 0;i2 < first_name_length;i2++){
full_name[i] = first_name[i2];
i++;
}
full_name[i++]=' ';
for(i2 = 0;i2 < last_name_length;i2++){
full_name[i] = last_name[i2];
i++;
}
printf("%s",full_name);
return 0;
}
den Ausgang, wenn geben Sie die "name" - Wert in den beiden scanf :
n n
sein und es sollte :
name name
edit:
#include <stdio.h>
int main()
{
char first_name[15], last_name[15] ,full_name[32];
int i=0,i2;
printf("enter your first name\n");
scanf("%14s",first_name);
printf("enter your last name\n");
scanf("%14s",last_name);
for(i2 = 0;first_name[i2];i2++){
full_name[i] = first_name[i2];
i++;
}
full_name[i++]=' ';
for(i2 = 0;last_name[i2];i2++){
full_name[i] = last_name[i2];
i++;
}
printf("%s",full_name);
return 0;
}
den Ausgang, wenn geben Sie den "tom" - Wert in der ersten scanf und "fox" - Wert in der zweiten scanf :
tom fox↓@
sein und es sollte :
tom fox
- Ihre
first_name
undlast_name
sind 15 char und jedefull_name
30. Wenn Sie fügen Sie ein Leerzeichen zwischen einem max Länge first_name und max Länge last_name, wirst du in Schwierigkeiten sein. - ich bearbeitet meine Frage was ist nun es funktioniert nicht, auch die Ausgabe nur der erste name, aber der Nachname nicht angezeigt
- Sie sind sich nicht Inkrementieren
i
nachdem Sie den Raum, du bist die Inkrementierung vor der hand. - ich bearbeitet meine Frage, aber es immer noch die Ausgabe nur der erste name, aber der Nachname nicht angezeigt
- fox Nicht gut ist, aktualisieren Sie Ihre post in der Mode die Sie haben. Empfehlen zurücksetzen auf die Vorherige version und Anhängen neue code -, Daten-oder Einsichten.
- Sie sind nicht nul beenden full_name. Hinzufügen full_name[i] = 0; rechts vor dem printf, außerhalb der for-Schleife.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Rückgabewert von
scanf()
ist die Anzahl der Felder, die erfolgreich gescannt, nicht die Länge einer Zeichenkette.Verwenden:
Gleiche für
last_name
[Bearbeiten]
Seit der OP will nicht die Einführung neuer Funktionen (wie auch
strlen()
), verwenden Sie"%n
zu finden, die Länge."%n
Datensatz der Analyse position.Finden ODER Länge der harte Weg
[Edit 2]
OP ' s neueste nicht die Zeichenkette beenden.
first_name
und suchen Sie nach '/0' stattstrlen
.full_name[i] = 0;
vor dem drucken anzeigen.char name[10]; char* p_c = &name[5]; scanf("%s", p_c);
möglich?full_name
und Scannen Sie dann den Nachnamen inscanf("%14s", &full_name[strlen(full_name)]);
oder eine Variante von diesem Konto für den Raum, etc.c
code? Aka "Reine"c
ist nie zu 100% "sicher" und Sie müssen wirklich darauf achten, was Ihr tut.strlen
nach der Lektüre zu finden, die Länge , und ziemlich sicher, dass es viel schneller, dass einfor
mit einem Zähler.c
ich habe gesehen, dass viele kaum lesbar komplexen code ,und speziell dieses Beispiel nicht zu Komplex zu implementieren "sicher". Ich denke, Sie sollten das Gefühl der Grenze, wo Sie Opfer Lesbarkeit für Leistung und immer noch verstehen, einen Monat später, was dieses Stück code gibt.Umgeschrieben, ohne die sprintf-Funktion und ohne Zeiger
Ändern
zu
Deine for-Schleife sind die Bedingungen auch nicht ganz richtig:
scanf()
.Die Funktion scanf() nicht zurückgegeben wird die Anzahl Zeichen eingelesen. Eher, es gibt die Anzahl der erfolgreichen Spiele es gelesen (oder Fehler). In Ihr läuft, scanf() kehrt zurück, 1, so dass Sie nur kopieren Sie die ersten Buchstaben von Vorname und name vollständiger name.
Außerdem müssen Sie zu initialisieren, full_name, um alle Nullen oder nul zu beenden, nachdem Sie fertig sind das kopieren der Nachname.
Darüber hinaus die Art und Weise, die Sie Lesen, in die Saiten zu gefährlich ist. Sollten Sie einschränken, wie viele Zeichen scanf() Einlesen kann, sonst wird es überlaufen Ihr Puffer-und trash-Speicher (oder lassen Sie die hacker, etc.):
Oder noch besser: