比较char **数组中的值

时间:2013-05-31 09:22:26

标签: c

我正在研究一个C项目。我是C的新手,请原谅我,如果这是一个简单的问题。

我有一个char **,它是一个包含各种值的数组。在所有值中,除了在strcmp上保持核心转储的值之外,我没有问题。

以下是我的代码:

if (strcmp(reportParameterArray[P_UNIQUECOLS],'Y') != 0)
{
    //Do something
}

P_UNIQUECOLS是一个枚举,它是从中检索值的索引。如果我查看GDB中的值,我可以看到它应该包含YN,但由于某种原因,应用程序崩溃了。

感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分:11)

使用"Y"这是一个字符串文字而不是'Y'这是char字面值,因为strcmp()需要两个const char*个参数。

在高级别编译警告并且不要忽略它们(最好将它们视为错误)。

答案 1 :(得分:2)

'Y'是单个字符,strcmp需要一个指针。如果您的编译器没有给您至少一个警告,那么您没有使用正确的选项。

使用"Y"代替'Y'

答案 2 :(得分:2)

是的,strcmp将两个参数都作为字符串。

如果应用程序崩溃,并且出现分段错误,则意味着您正在访问某些未经授权的内存位置。检查“reportParameterArray”是否已分配内存。