如何使用具有字符作为参数的函数将字符转换为字符串并返回字符串?

时间:2014-03-24 00:52:38

标签: 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=change(t);    
    printf("\n%s",kk);    
    return 0;    

}    

由于

3 个答案:

答案 0 :(得分:2)

如果不进行复制,则无法从函数返回指向局部变量的指针。在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;
}

答案 1 :(得分:0)

#include <stdio.h>
#include <stdlib.h>

char* change1(char c){
    static char s[2];
    s[0]=c;
    return s;
}

char* change2(char c){
    char *s = malloc(2);
    s[0]=c;
    s[1]='\0';
    return s;
}

char* change3(char c, char *s){
    s[0]=c;
    s[1]='\0';
    return s;
}


int main() {
    char t='o';
    char* kk;
    kk=change1(t);
    printf("%s\n", kk);

    kk=change2(t);
    printf("%s\n", kk);
    free(kk);

    char s[2];
    kk = change3(t, s);
    printf("%s\n", kk);
   return 0;
}

答案 2 :(得分:0)

你可以改变

char s[2];

char *s; s = malloc(2);

你的程序应该可以正常工作。