返回int值的函数,而不是C中的字符串

时间:2016-10-16 20:47:23

标签: c pointers char

我正在尝试在C中编写一个函数,它将int作为参数并返回一个char数组(或字符串)。

<Field name="favoriteColor" component="select">
  <option></option>
  <option value="#ff0000">Red</option>
  <option value="#00ff00">Green</option>
  <option value="#0000ff">Blue</option>
</Field>

但我的函数返回一个int,而不是一个字符串。我已经阅读了人们可能遇到过类似情况的帖子,但是我无法理解指针类型函数是如何工作的以及如何让它们返回我想要的东西(我已经记录了一些关于指针的内容并且我对如何他们独自工作,但我从来没有尝试过编写一段代码来为他们添加一些功能,比如使解决方案更有效或其他。)

2 个答案:

答案 0 :(得分:4)

const char * month(int x)
{
    char result[40];
    if(x<=31) strcpy(result,"can be a day of the month");
    else strcpy(result,"cannot be a day of the month");
    return result;
}

这没有意义。您返回一个指向数组的指针,但在函数返回后,该数组不再存在,因为result是函数的本地。

对于C:

const char * month(int x)
{
    if(x<=31) return "can be a day of the month";
    return "cannot be a day of the month";
}

对于C ++:

std::string month(int x)
{
    if(x<=31) return "can be a day of the month";
    return "cannot be a day of the month";
}

答案 1 :(得分:1)

考虑到这是一个C代码。 (不确定是否是C ++) 这里你最好的选择是在函数范围之外声明result,然后在你正在使用的函数内传递一个指针,你可以填充你的数据(确保不溢出) 。在您使用的内容中,result将被销毁,您将无法使用它。

void month(int x, char* result)
{
    if(x<=31) strcpy(result,"can be a day of the month");
    else strcpy(result,"cannot be a day of the month")
}

这只是一个建议,你可以返回一些错误代码或任何你想要的。