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 と smallOrEqualOfZero を二重引用符で囲みます。

または、単一の文字 (g/s など) を返し、呼び出し元関数で条件を使用することもできます。

注: 「greaterThanZero」は通常、スタックではなく、const セクションに移動します。したがって、関数から安全に戻る必要があります。

于 2012-12-14T09:11:12.117 に答える