C Lesen die Eingabe in ein char-array in Schleife
Ich lese input von stdin
z.B. name des Fahrzeugs, der Art der Auto.
Das problem, das ich bin vor ist, wenn ich in Anzahl von Autos 2 und ich nehme
Eingang in der Schleife, der zweite Wert wird überschrieben, um den ersten Wert über scanf
.
Geben Sie die Anzahl der Autos:2
Geben Sie den Namen der Spalte :chevy
Art von Auto zur Verfügung kann mit Elektro -, gas - Geben Sie den Typ des Autos :gas -
Geben Sie den Namen der Spalte :chevy2
Art von Auto zur Verfügung kann mit Elektro -, gas - Geben Sie Art von Auto :elektrische
nun wenn ich drucken alles, was ich sehe ist die elektrische
#include <stdio.h>
int main(int argc, char *argv[])
{
setbuf(stdout, NULL);
int carNum;
int i;
char carName[50];
char carType[200];
printf("\nEnter number of cars:");
scanf("%d",&carNum);
for(i=0;i<carNum;i++)
{
printf("\nEnter name of car :");
scanf("%s", &carName[i]);
printf("\nType of car available can be electric,gas - Enter type of car %d: ");
scanf("%s", &carType[i]);
}
for(i=0;i<carNum;i++)
{
printf("\nName of car %d: ",i+1);
printf("\n%s", &carName[i]);
printf("\nType of car %d: ",i+1);
printf("\n%c", &carType[i]);
}
return 0;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bearbeiten Neue Antwort:
Als Sie gezeigt haben Ihnen vorgeschrieben, dass Sie will, zu Lesen, die Zahl der PKW-Namen und-Typen, die Sie benötigen array von strings für
carName
undcartype
anstelle von einfachen char-array. wie(für einen Aufsatz-Lösung):sowie Ihre richtige scanf-und printf-Anweisungen wie diese:
(Hinweis: wenn ich Benutzer
%s
ich gebechar*
als argument, bei scanf als auch bei printf)alte Antwort:
In der ersten for-Schleife Deine scanf-Anweisungen sind falsch :
Brauchen Sie nur zu schreiben wie:
in der Zweiten Schleife, die in printf-Anweisungen sind falsch.
richtige ist
Denke auch ich, dass Ihre Forderung:
setbuf(stdout, NULL);
denke ichvoid fun(char* carName, char* carTypr){ // function detonation }
und rufen Sie diese Funktion wie:fun(carName, carType);
im mainDie arrays, die Sie deklarieren, nicht strings, stellt er eine ständige Erinnerung aus 50 bytes 200 bytes. Dies ist genug, um zu speichern eine einzelne 50-Zeichen-string, und 200 Zeichenkette bzgl..
Was Sie brauchen ist ein array von strings, erklärt wie diese.
Ich sugesst Sie schaffen einen Puffer für das Lesen jede Zeichenfolge, und verwenden Sie dann
strdup()
die kopieren und verteilen Sie die Zeichenfolge, um es in carnames.Hier ein Beispiel:
Sich bewusst sein, dass strdup reserviert Speicher für die Zeichenfolge, so dass, sobald Sie fertig sind, sollten Sie den Speicher frei.