0

(Can't use space and can't use: if,switch,.....case) I have my code:

#include <stdio.h>

int main()
{
    int dd, mm, yyyy;

    printf("Podaj date (w formacie dd-mm-yyyy):");
    scanf("%d-%d-%d", &dd, &mm, &yyyy);
    printf("Day:%02d\nMonth:%02d\nYear:%04d\n",dd,mm,yyyy);

    return 0;
}

And output looks like this:

Podaj date:06-08-0009
Day:06
Month:08
Year:0009

And how do it like this

Podaj date: 06-08-0009
Day:       06
Month:     08
Year:    0009
Vladyslav
  • 35
  • 5

2 Answers2

2

You could give the fixed parts of the format string as arguments instead and decide on the width of each in the format string:

printf("%-11s%02d\n%-11s%02d\n%-9s%04d\n", "Day:", dd, "Month:", mm, "Year:", yyyy);
//       ^^^        ^^^        ^^^
//        |          |        "Year:"
//        |         "Month:"
//        |
//       "Day:" - left adjusted, 11 chars

Also, always check that scanf succeeds:

if(scanf("%d-%d-%d", &dd, &mm, &yyyy) == 3) {
    printf("%-11s%02d\n%-11s%02d\n%-9s%04d\n", "Day:", dd, "Month:", mm, "Year:", yyyy);
}
Ted Lyngmo
  • 93,841
  • 5
  • 60
  • 108
0
void scanAndPrint(unsigned nspaces)
{
    int dd, mm, yyyy;

    printf("Podaj date (w formacie dd-mm-yyyy):");
    scanf("%d-%d-%d", &dd, &mm, &yyyy);
    printf("\nDay:%*s%02d\nMonth:%*s%02d\nYear:%*s%04d\n", nspaces - 2 - (int)sizeof("DAY"),"", dd,nspaces - 2 - (int)sizeof("MONTH"),"", mm,nspaces - 4 - (int)sizeof("YEAR"),"", yyyy);

}

https://godbolt.org/z/Kj1aoEazb

0___________
  • 60,014
  • 4
  • 34
  • 74