Ошибка отображения, когда дата отличается в программировании на C - PullRequest
0 голосов
/ 08 июня 2018

Итак, я пытаюсь отобразить сообщение об ошибке всякий раз, когда «Дата истечения срока действия» предшествует «Дате изготовления».Так, например, если я введу 2000 год для производства и 1999 год для истечения срока действия, то на нем должна отображаться ошибка типа «Дата истечения не может быть раньше даты производства». Я все еще изучаю программирование на C, и любая помощь будет принята с благодарностью.В настоящее время я использую Dev C ++ в качестве компилятора

РЕДАКТИРОВАТЬ: мне нужно, чтобы дата была в формате ДД / ММ / ГГГГ

Ниже мой код

void add_medicine() //Function to add customer
{
    system("cls");
gotoxy(15,5);
printf("================= ADD NEW MEDICINE ================");
char medicinename[50];
char medavailability[20];
char companyname[100];
char dom[50];
char doe[50];
int price [50];


    gotoxy(15,7);
    printf("Enter Medicine Name:");
    scanf("%s",&medicinename);

    gotoxy(15,9);
    printf("Enter Medicine Availability (Yes/No): ");
    scanf("%s",&medavailability);

    gotoxy(15,11);
    printf("Enter Company Name: ");
    scanf("%s", &companyname);

    gotoxy(15,13);
    printf("Enter Date of Manufacture: ");
    scanf("%s", &dom);

    gotoxy(15,15);
    printf("Enter Date of Expiry: ");
    scanf("%s", &doe);

    gotoxy(15,17);
    printf("Enter Price: ");
    scanf("%s", &price);


const char *fil  = "Medicines/"; //Creates file in an existing folder
const char *exec = ".txt";
char filename[50];
snprintf(filename, sizeof filename, "%s%s%s", fil, medicinename, exec);

FILE *fp; //Adding all data to the file

fp =fopen(filename,"w+");

fprintf(fp, "%s\n", medicinename);

fprintf(fp, "%s\n", medavailability);

fprintf(fp, "%s\n", companyname);

fprintf(fp, "%s\n", dom);

fprintf(fp, "%s\n", doe);

fprintf(fp, "%s\n", price);

fclose(fp);

gotoxy(15,19);
printf("================= NEW MEDICINE ADDED! =============");
gotoxy(15,21);
printf("PRESS ANY KEY TO GO BACK");
getch();
adminMenu(0);
}

1 Ответ

0 голосов
/ 08 июня 2018

Чтобы сравнить строки в C, вам нужно использовать strcmp(), например:

if(strcmp(doe, dom) < 0)
    printf("Date of expiry cannot be before date of manufacture\n");

Однако, поскольку эти даты являются просто годами,почему бы не использовать int вместо char массивов?

Например:

int doe, dom;
if(doe < dom)
    printf("Date of expiry cannot be before date of manufacture\n");

PS: Если ваши даты в формате, тогда читайте Датасравнение, чтобы найти, что больше в C .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...