2012-12-14 477 views
0

我是C的初學者, 我想寫一個函數來返回一個字符串。 我知道在C中我們沒有字符串數據類型。而不是這些我嘗試使用一個字符數組,但這不是我的解決方案。c中的字符串數據類型

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

請幫幫我。

回答

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); 
} 
+1

不客氣 – MOHAMED

-1

使用"而不是''greaterThanZero'應該"greaterThanZero")圍繞greaterThanZero & smallerOrEqualOfZero

0

使用雙引號。或者,您也可以返回單個字符(比如說g/s)&,然後在調用者函數中使用條件。

注意:「greaterThanZero」通常會進入const部分,而不是堆棧。因此從函數返回應該是安全的。

+0

Downvoter,請讓我知道我的錯誤,讓我能改善... – anishsane

5

的返回類型必須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 
+0

請寫信給使用這些main()的代碼功能 – Ehsan

相關問題