[Solved] Strings are not printed in accordance with the way they are allocated


Errors were not detected because either the warnings of your compiler are not enabled, being ignored or need for a better compiler. This code does not allocate space for data being read.

Simplest solution: used fixed size arrays and limit user input.

#include <stdio.h>

int main(void) {
    char colorOne[80+1];
    printf("How many bands??\n");
    ...
    printf("\n\nEnter your first band color: ");
    if (1 != scanf("%80s", colorOne)) Handle_EOForIOError();
    ...
    printf("\n\nBand One: %s",colorOne);
}

A more robust solution would use fgets(). If the OS support getline(), consider that.

int main(void) {
    char colorOne[80+1+1];
    printf("How many bands??\n");
    ...
    printf("\n\nEnter your first band color: ");
    if (fgets(colorOne, sizeof colorOne, stdin) == NULL) Handle_EOForIOError();

    // Delete potential ending \n
    size_t len = strlen(colorOne);
    if (len > 0 && colorOne[len-1] == '\n') colorOne[--len] = 0;
    ...
    printf("\n\nBand One: %s",colorOne);
}

Practice defensive coding

0

solved Strings are not printed in accordance with the way they are allocated