所以,我要做的是创建一个将大写字符切换为小写的函数,反之亦然。
以下是我正在使用的内容:
#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;
}
在学习过程中。谢谢你的时间。
答案 0 :(得分:2)
您忘记向switched
添加空终止。你需要添加
switched[counter] = '\0'; // add '\0' to the end
之前
printf("Your flipped text is: %s \n", switched);
您需要将while(*ptrword != NULL)
更改为while(*ptrword != '\0')
。
正如@ooga指出的那样,你最好为flipped
分配足够的空间。因此,将char flipped[] = "";
更改为char flipped[100] = "";
。
解决这些问题后,它应该按预期工作。查看Ideone上的运行结果。
答案 1 :(得分:1)
您没有为flipped
提供足够的空间。通过定义和初始化为:
char flipped[] = "";
你只给它一个字符,初始化为'\0'
,因为这种形式的定义只分配了足够的空间来保存给定的字符串,并且你已经传递了空字符串。
尝试
char flipped[100] = "";
答案 2 :(得分:1)
您的代码中有三个错误。
POINT1:
永远不会char flipped[] = "";
像这样分配内存。这不是一个正确的程序。
POINT2:
请勿检查此while(*ptrword != NULL)
之类的空字符。你应该像(* ptrword!='\ 0')这样检查。
点3:
switched
需要while(*ptrword != NULL) { ...} set switched[counter]='\0'
之后