【问题标题】:Comparing Strings and pointers比较字符串和指针
【发布时间】:2019-11-09 16:26:46
【问题描述】:

对于我正在学习的课程,我仍在尝试围绕 C 中的指针和字符串。在下面的示例中,g_reservations[][] 是一个全局变量(我知道这并不理想,但我无法更改)。

错误: 警告 C4047 'function': 'const char *' 与 'char' EconoAirBeta 的间接级别不同 ... 299

*passenger 是一个指针,所以要创建一个指向全局的指针吗?这似乎没有必要......

我如何使这项工作?我觉得我错过了一些我的大脑似乎无法理解的非常简单的概念......

unsigned int FindSeatWithPassenger(const char *passengerName)
{
    unsigned int seat = 0;
    for (seat = 0; seat < NUM_SEATS; ++seat)
    {
        if ( strncmp(passengerName, g_reservations[seat][0], NAME_LENGTH) != 0) //error here with global variable
        {
            return seat;
            break;
        }
    }
    return '\0';
}

全局声明:

#define NAME_LENGTH 10
#define NAME_BUFFER_LENGTH ( NAME_LENGTH + 1 )
char g_reservations[NUM_SEATS][NAME_BUFFER_LENGTH];

【问题讨论】:

  • Coyld 你请说明g_reservations[seat][0] 矩阵是如何声明的?是char** 吗?
  • 在上面编辑以包含全局声明...
  • strncmp 中使用g_reservations[seat]。第二个索引表示要比较的字符串的字符。
  • 注意:stncmp 相等时返回 0!
  • 注意:最后你正式返回一个字符,而函数应该返回一个无符号整数。最后,使用return 0;

标签: c c89


【解决方案1】:

类型错误

正如错误所说。

g_reservations[seat][0]char

int strncmp(const char *s1, const char *s2, size_t n) 期望 char * 对应于 s2

使用&amp;g_reservations[seat][0] 或直接使用g_reservations[seat]

strncmp(passengerName, g_reservations[seat], NAME_LENGTH)

【讨论】:

    最近更新 更多