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);