我有这个功能,可以将字符串更改为所有小写字母。
我正在尝试为此函数创建一个单元测试,但我认为我传递的参数错误,我得到了这个错误。
Segmentation Fault (core dumped)
这是我的代码。
void example (char const * str1, int length, char * str2) {
int i;
for(i = 0; i < length; i++) {
*(str2 + i) = putchar(tolower( *(str1 + i) ));
}
}
void testexample() {
char * str1 = "TEST";
char * str2 = "";
example( str1, 4, str2);
printf("%s\n", *str2);
}
int main() {
testexample();
return 0;
}
str1是原始字符串,n是字符串的长度,str2是str1的全小写版本。
我一直试图解决这个问题一段时间了。
我感谢任何帮助。谢谢。
答案 0 :(得分:0)
在你的主要:
char * str2 = "";
然后传递str2
作为参数,但它的存储空间太小,存储空间是进一步的只读存储器(指向文字)。结果是你的崩溃。使用:
char str2[32] = 0;
或您需要的任何长度,包括空终止字符。
答案 1 :(得分:0)
你也写printf("%s", *str2)
。如果str2是一个字符串,那么* str2是一个char。