So, what I'm trying to do is create a function that switches uppercase characters to lowercase and vice-versa.
Here is what I'm working with:
#include <stdio.h>
#include <stdlib.h>
int caplowswitch(char string[], char switched[]);
int main(){
    char name[] = "whyisthisnotworking";
    char flipped[] = "";
    caplowswitch(name, flipped);
return 0;
}
int caplowswitch(char word[], char switched[]){
    char *ptrword = word;
    unsigned short int counter = 0;
    printf("Your text input is: %s \n", word);
    while(*ptrword != NULL){
    switched[counter] = (*ptrword ^ 0x20);
    counter++;
    ptrword++;
    }
    printf("Your flipped text is: %s \n", switched);
    return 1;
}
In the process of learning. Thanks for your time.
You forgot to add null termination to switched. You need to add
switched[counter] = '\0';  // add '\0' to the end
before
printf("Your flipped text is: %s \n", switched);
You need to change while(*ptrword != NULL) to while(*ptrword != '\0').
As @ooga pointed out, you'd better allocate enough space to flipped. So change char flipped[] = ""; to char flipped[100] = "";.
After fixing these issues, it should work as expected. Check out running result on Ideone.
You aren't giving enough space to flipped. By defining and initializing it as:
char flipped[] = "";
you are only giving it a single character, initialized to '\0', since that form of definition allocates only enough space to hold the given string, and you've passed the empty string.
Try
char flipped[100] = "";
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With