强制函数返回 NULL 而不是预先确定的 return_type

sea*_*mus 0 c null return

下面是一个命令解析函数。它在"-"处拆分用户输入。

如果传入“time-10”,则返回10。如果没有找到“-”,我想返回NULL,这样我就知道没有找到“-”,程序可以根据该信息做出决定。但是,因为函数返回类型是char我必须返回一个char 指针,并且目前通过返回原始参数来满足这个要求。

有没有办法解决这个问题,或者我是否必须返回一个 Char 指针并编写代码来确定该返回值是否等于“未找到”

char * second_arg(char * arg) {  
    char * j = strchr(arg, '-');
    if(j==NULL) {
        return arg;
    }
    return ++j;
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*all 5

函数返回类型不是char; 它是char *。由于该函数已经返回指向 的指针char,因此很容易返回 NULL。

换行return arg;return NULL;

  • @seamus,如果存在分段错误,我认为几乎可以肯定是因为调用代码对返回值执行的操作,而不是此函数的内容。您可能需要花时间使用不包含“-”的测试字符串来调试代码 (5认同)
  • @seamus `NULL` 旨在用于指针。您也可以使用“0”代替(这通常是“NULL”的定义),但首选编写“NULL”,因为它可以提高代码清晰度。 (3认同)