Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.63 KB | None | 0 0
  1. #include "stdlib.h"
  2. #include "stdio.h"
  3. #include "string.h"
  4.  
  5. typedef struct {
  6.     int day;
  7.     char month[4];
  8.     int year;
  9. }
  10. DATE;
  11.  
  12. typedef struct {
  13.     const char* pFirstName;
  14.     const char* pLastName;
  15.     const char* pNationality;
  16.     DATE birthDate;
  17.  
  18. }
  19. STUDENT;
  20.  
  21. int exam(STUDENT *pStudents, int nStudents, const char *pPattern);
  22.  
  23. int main() {
  24.     STUDENT students[] = { { "John", "Smith", "Britain",{ 1, "Feb", 2000 } },{ "Mary", "Weaver", "USA",{ 3, "Jan", 1999 } } };
  25.     const char *oneStudent = "Mary, Weaver born 3 January 1999 from USA";
  26.     printf("%s\n", oneStudent);
  27.  
  28.     int result = exam(students, 2, oneStudent);
  29.     printf("%d\n", result);
  30.  
  31.     printf("Press ENTER key to Continue\n");
  32.     getchar();
  33.  
  34.     return 0;
  35. }
  36. // "<last-name>, <first-name> born <day> <month-in-english> <year> from <country>"
  37. int exam(STUDENT *pStudents, int nStudents, const char *pPattern) {
  38.     int result = 0;
  39.     int sizeOfString;
  40.     char *holderString = (char*)malloc(strlen(pPattern) + 1);
  41.     strcpy_s(holderString, strlen(pPattern) + 1, pPattern);
  42.  
  43.  
  44.     sizeOfString = (int)(strchr(holderString, ',') - holderString);
  45.     char* firstName = (char*)malloc(sizeOfString + 1);//!!!!!!!!
  46.     firstName[sizeOfString] = '\0';
  47.     strncpy_s(firstName, sizeOfString + 2, holderString, sizeOfString);
  48.     holderString = strchr(holderString, ',') + 2;
  49.  
  50.     sizeOfString = (int)(strchr(holderString, ' ') - holderString);
  51.     char* lastName = (char*)malloc(sizeOfString + 1); //!!!!!!!!!!!
  52.     lastName[sizeOfString] = '\0';
  53.     strncpy_s(lastName, sizeOfString + 2, holderString, sizeOfString);
  54.     holderString = strchr(holderString, ' ') + 6;
  55.  
  56.     int dayOfMonth = atoi(holderString); //!!!!!!!!
  57.     holderString = strchr(holderString, ' ') + 1;
  58.  
  59.     sizeOfString = (int)(strchr(holderString, ' ') - holderString);
  60.     char* month = (char*)malloc(sizeOfString + 1); //!!!!!!!!!!!
  61.     month[sizeOfString] = '\0';
  62.     strncpy_s(month, sizeOfString + 2, holderString, sizeOfString);
  63.     holderString = strchr(holderString, ' ') + 1;
  64.  
  65.     int year = atoi(holderString); //!!!!!!!!
  66.     holderString = strchr(holderString, ' ') + 6;
  67.  
  68.     printf("%s\n", firstName);
  69.     printf("%s\n", lastName);
  70.     printf("%i\n", dayOfMonth);
  71.     printf("%s\n", month);
  72.     printf("%i\n", year);
  73.     printf("%s\n", holderString);
  74.  
  75.     if (pStudents == 0 || nStudents == 0) {
  76.         return 0;
  77.     }
  78.  
  79.    
  80.     for (int i = 0; i < nStudents; i++) {
  81.         if (strcmp(pStudents[i].pLastName, lastName) == 0 && strcmp(pStudents[i].pFirstName, firstName) == 0 && pStudents[i].birthDate.day == 1 && strncmp(month, pStudents[i].birthDate.month, dayOfMonth) == 0 && pStudents[i].birthDate.year == year && strcmp(pStudents[i].pNationality, holderString) == 0) {
  82.             result = 1;
  83.         }
  84.     }
  85.  
  86.     return result;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement