Deklarieren Sie eine Person-Struktur, die die folgenden zwei Datenelemente enthält: Name und Alter.Wie suche ich nach Struktur char c?
struct Person
{
char name[20];
int age;
};
definieren fillPersons Funktion, die eine leere Palette von Personen erfolgt, und füllt das Array.
void fillPersons(struct Person * myPs);
Für Funktion
struct Person p[ARRAY_SIZE];
definieren searchPerson Funktion, die eine Reihe von Personen erfolgt, und den Namen zu suchen. Die Funktion gibt das entsprechende Alter zurück, wenn die Person gefunden wird, andernfalls -1.
int searchPerson(struct Person * myPs, char * myName);
definieren printPersons Funktion, die eine Reihe von Personen erfolgt, und druckt den Inhalt des Arrays.
void printPersons(struct Person * myPs);
Haupt Fuction
int main()
{
struct Person p[ARRAY_SIZE];
int a;
int isFound;
char myName[20];
Schaltergehäuse für Benutzeroberfläche
do
{
printf("1)FILL ARRAY\n");
printf("2)SEARCH BY NAME\n");
printf("3)PRINT ARRAY\n");
printf("4)EXIT\n");
printf("Search Operation:");
scanf_s("%d", &a);
switch (a)
{
case 1:fillPersons(p); break;
Ich schreibe den Hauptteil des Suchens, aber ich kann die Funktion füllen.
case 2:printf("\Give the name to search for:");
scanf_s("%s", &myName);
isFound = searchPerson(p, myName);
if (isFound == -1)
{
printf("%s not avaible in the array. \n", myName);
}
else
{
printf("The age of %s is %d.\n", myName, isFound);
}
break;
Nach diesem Teil ist es in Ordnung, Namen und Alter zu lesen, aber kann nicht tun, es ist Teil der Suche.
case 3:printPersons(p); break;
case 4:printf("\nProgram exits ..."); exit(0);
}
} while (a != 4);
system("pause");
return 0;
}
Es ist in Ordnung, diesem Scanf Teil
void fillPersons(struct Person * myPs)
{
int i;
for (i = 0; i < 4; i++)//defining 4 person i<4
{
scanf_s("%20s", p[i].name,_countof(p[i].name));//if i dont do _coutof
scanf_s("%d", &p[i].age); // i get null.ptr error
} // on visiual studio
}
Drucken der Schüler Namen und das Alter
void printPersons(struct Person * myPs)
{
int i;
for (i = 0; i < 4; i++)
{
printf("%s %d", p[i].name, p[i].age);
}
}
Aber ich weiß nicht, wie man mit innen auf fuction füllen ?
int searchPerson(struct Person * myPs, char * myName)
Die Ausgabe sollte so sein
Das Wichtigste zuerst, Ihr Programm zusammenstellen, finden und alle Fehler beheben. Speziell rufen Sie Funktionen mit '* myPs' auf, aber Sie greifen auf' p [i] .'variable zu. Die Regel von SO ist also, dass Sie ein [mcve] posten müssen und wenn Sie es nicht kompilieren können, weisen Sie darauf hin, welche Fehler Sie beim Kompilieren bekommen. – KevinDTimm
Noch eine Sache, 'scanf_s ("% s ", & meinName);' ist nicht ideal (benutze stattdessen fgets). Unabhängig davon sollte der Aufruf 'scanf_s ("% s ", meinName) lauten;' – KevinDTimm
Wenn Sie einen C++ - Kurs verkauft haben, müssen Sie darüber informiert werden, dass der Kurs fehlgeschlagen ist. –