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