|
|
- #include <string.h>
- #include <stdio.h>
- #include <stdlib.h>
-
-
-
- typedef struct {
- char *name;
- int left, right, up, down;
- } direction_s;
-
-
- void this_row(direction_s d);
- void draw_box(direction_s d);
-
-
- int main() {
-
- direction_s D = {.name = "left", .left = 1};
- draw_box(D);
-
- // name is first, so we can omit label
- D = (direction_s) {"upper right", .up = 1, .right = 1};
- draw_box(D);
-
- // all struct elements set to zero
- draw_box((direction_s){});
-
- }
-
-
- void this_row(direction_s d) {
-
- char s[] = ".*.\n";
-
- if(d.left) {
- strlcpy(s, "*..\n", sizeof(s));
- } else if(d.right) {
- strlcpy(s, "..*\n", sizeof(s));
- }
-
- printf("%s", s);
-
- }
-
-
- void draw_box(direction_s d) {
-
- printf("%s:\n", (d.name ? d.name : "a box"));
-
-
- if(d.up) {
- this_row(d);
- } else {
- printf("...\n");
- }
- if(!d.up && !d.down) {
- this_row(d);
- } else {
- printf("...\n");
- }
- if(d.down) {
- this_row(d);
- } else {
- printf("...\n");
- }
- printf("\n");
-
- }
|