0

我是 C 的初学者,我正在尝试编写一个函数来返回一个字符串。我知道在 C 中我们没有字符串数据类型。而不是这些,我尝试使用一个字符数组,但这不是我的解决方案。

char[] my_function(int x){
    if(x>0)
        return 'greaterThanZero';
    else
        return 'smallerOrEqualOfZero';
}

请帮我。

4

4 回答 4

6

返回类型需要是const char *并且字符串文字需要用双引号括起来:

const char * my_function(int x)
{
    if (x > 0)
        return "greaterThanZero";
    else
        return "lessThanOrEqualToZero";
}

int main(void)
{
    printf("my_function(1)  = %s\n", my_function(1));
    printf("my_function(0)  = %s\n", my_function(0));
    printf("my_function(-1) = %s\n", my_function(-1));
    return 0;
}

请注意,单引号用于char变量:

char c = 'X';                // single character - single quotes
char *s = "Hello world!";    // string - double quotes
于 2012-12-14T09:13:08.103 回答
1
void my_function(int x, char **ret){
    if(x>0)
        *ret= "greaterThanZero";
    else
        *ret= "smallerOrEqualOfZero";
}

主要是

int main() {
   char *string;
   my_function(1, &string);
   printf("%s",string);
}

其他方式:

void my_function(int x, char *T){
        if(x>0)
            strcpy(T,"greaterThanZero");
        else
            strcpy(T, "smallerOrEqualOfZero");
    }

主要是

int main() {
   char string[100];
   my_function(1, string);
   printf("%s",string);
}
于 2012-12-14T09:18:08.190 回答
-1

使用"代替''greaterThanZero'应该是"greaterThanZero"

于 2012-12-14T09:11:04.880 回答
-1

在greaterThanZero 和smallerOrEqualOfZero 周围使用双引号。

或者,您也可以返回单个字符(例如 g/s),然后在调用函数中使用条件。

注意:“greaterThanZero”通常会进入 const 部分,而不是堆栈。因此从函数返回应该是安全的。

于 2012-12-14T09:11:12.117 回答