Mun koodi
unknown
c_cpp
4 years ago
2.2 kB
6
Indexable
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 30
typedef struct Henkilo
{
char etunimi[MAX];
int ika;
} HENKILO;
void vertaileTietueet(HENKILO *pTaulukko1, HENKILO *pTaulukko2);
void kopioiTietueet(HENKILO *pTaulukko1, HENKILO *pTaulukko3);
HENKILO *varaaMuisti(HENKILO *pTaulukko);
int main(void)
{
HENKILO hlot1, hlot2, hlot3;
HENKILO *pHlot1 = &hlot1, *pHlot2 = &hlot2, *pHlot3 = &hlot3;
// Ensimmäisen henkilön tiedot
printf("Anna ensimmäisen henkilön etunimi: ");
scanf("%s", pHlot1->etunimi);
getchar();
printf("Anna ensimmäisen henkilön ikä: ");
scanf("%d", &pHlot1->ika);
getchar();
// Toisen henkilön tiedot
printf("Anna toisen henkilön etunimi: ");
scanf("%s", pHlot2->etunimi);
getchar();
printf("Anna toisen henkilön ikä: ");
scanf("%d", &pHlot2->ika);
getchar();
vertaileTietueet(pHlot1, pHlot2);
pHlot3 = varaaMuisti(pHlot3);
kopioiTietueet(pHlot1, pHlot3);
free(pTaulukko);
printf("Muisti vapautettu.\n");
printf("Kiitos ohjelman käytöstä.\n");
return 0;
}
void vertaileTietueet(HENKILO *pTaulukko1, HENKILO *pTaulukko2)
{
if (strcmp(pTaulukko1->etunimi, pTaulukko2->etunimi) == 0 && pTaulukko1->ika == pTaulukko2->ika)
{
printf("Annetut tiedot ovat samat.\n");
}
else
{
printf("Annetut tiedot eivät ole samoja.\n");
}
return;
}
void kopioiTietueet(HENKILO *pTaulukko1, HENKILO *pTaulukko3)
{
strcpy(pTaulukko1->etunimi, pTaulukko3->etunimi);
pTaulukko3->ika = pTaulukko1->ika;
if (strcmp(pTaulukko1->etunimi, pTaulukko3->etunimi) == 0 && pTaulukko1->ika == pTaulukko3->ika)
{
printf("Kopioinnin jälkeen tietueiden tiedot ovat samoja.\n");
}
if (pTaulukko1 != pTaulukko3)
{
printf("Kopioinnin jälkeen tietueiden osoitteet eivät ole samoja.\n");
}
return;
}
HENKILO *varaaMuisti(HENKILO *pTaulukko)
{
if ((pTaulukko = (HENKILO *)malloc(sizeof(HENKILO))) == NULL)
{
perror("Muistin varaus epäonnistui.\n");
exit(0);
}
return pTaulukko;
}
Editor is loading...