char* clean_string (char *input_string){
/*Ensure that input string isn't null and only do heavy lifting if it's not null*/
if (input_string){
char *stripped;
stripped = (char*)malloc(strlen(input_string)*sizeof(char));
while (*input_string != '\0'){
if isalpha(*input_string){
*stripped = toupper(*input_string);
input_string++;
stripped++;
} else {
input_string++;
}
}
/* *stripped++ += '\0';*/
return stripped;
}
/*default return val*/
return NULL;
}
有人可以告诉我我要怎么做吗?试图进行测试运行,当我尝试调用它时不输出任何内容。
最佳答案
您将返回一个指向字符串中最后一个字符的指针(stripped++
?)。
您分配的字节太少了(应该是strlen(...) + 1
)。
stripped = (char*)malloc(strlen(input_string)*sizeof(char)); /* Wrong. */
stripped = (char*)malloc(strlen(input_string) + 1);
/* .. */
stripped++;
/* .. */
return stripped;
在开始更改
original_stripped = stripped
之前,尝试保留一个类似于stripped
的副本,然后返回复制的值(而不是递增的值)。关于c - 从C函数返回字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7427016/