C 如何使用以字符为参数并返回字符串的函数将字符转换为字符串?
我在使用函数执行任务时遇到问题。我是否也需要传递一个指向字符的指针才能执行任务。我使用了以下代码C 如何使用以字符为参数并返回字符串的函数将字符转换为字符串?,c,C,我在使用函数执行任务时遇到问题。我是否也需要传递一个指向字符的指针才能执行任务。我使用了以下代码 #include <stdio.h> char* change(char c) { char s[2]; s[0]=c; s[1]='\0'; return s; } int main() { char t='o'; char* kk; kk
#include <stdio.h>
char* change(char c)
{
char s[2];
s[0]=c;
s[1]='\0';
return s;
}
int main()
{
char t='o';
char* kk;
kk=change(t);
printf("\n%s",kk);
return 0;
}
#包括
字符*更改(字符c)
{
chars[2];
s[0]=c;
s[1]='\0';
返回s;
}
int main()
{
chart='o';
char*kk;
kk=变化(t);
printf(“\n%s”,kk);
返回0;
}
谢谢,如果不进行复制,就无法从函数返回指向局部变量的指针。在
C
中,有两种方法可以满足您的需要
- 要求调用方提供一个缓冲区来写入字符串并返回长度,以及
- 使用
或等效项动态分配返回值,并要求调用者malloc
结果字符串free
int change(char c, char* res, int len) {
if (len < 2) return -1; // Invalid parameters
res[0]=c;
res[1]='\0';
return 1;
}
char* change(char c) {
char *res = malloc(2);
res[0]=c;
res[1]='\0';
return res;
}
#包括
#包括
字符*change1(字符c){
静态字符s[2];
s[0]=c;
返回s;
}
字符*更改2(字符c){
char*s=malloc(2);
s[0]=c;
s[1]='\0';
返回s;
}
char*change3(char c,char*s){
s[0]=c;
s[1]='\0';
返回s;
}
int main(){
chart='o';
char*kk;
kk=变化1(t);
printf(“%s\n”,kk);
kk=变化2(t);
printf(“%s\n”,kk);
免费(kk);
chars[2];
kk=变化3(t,s);
printf(“%s\n”,kk);
返回0;
}
您只需更改
char s[2];
到
你的程序应该运行良好 当然,稍后需要返回指针的
free()
。会显示一条警告,说明内置函数“malloc”的隐式声明。这是因为我没有在此处进行大小写转换<代码>s=(char*)malloc(2)代码>。然而,这不应该是你的代码的问题。
char s[2];
char *s; s = malloc(2);