我正在做一个C语言项目。我是C的新手,所以如果这是一个简单的问题,请原谅我。
我有一个char **
,它是一个包含各种值的数组。在所有的值中,我对值包含的内容没有任何问题,除了一个值在字符串上保持核心转储。
if (strcmp(reportParameterArray[P_UNIQUECOLS],'Y') != 0)
{
//Do something
}
P_UNIQUECOLS
是一个枚举,它是检索值的索引。如果我查看GDB中的值,我可以看到它应该包含Y
或N
,但由于某种原因,应用程序正在崩溃。
谢谢你能提供的任何帮助。
使用字符串字面值"Y"
,而不是char
字面值'Y'
,因为strcmp()
有两个const char*
参数。
编译时使用高级警告,不要忽略它们(最好将它们视为错误)。
'Y'
是单个字符,strcmp
需要一个指针。如果你的编译器没有给你一个警告,说明你没有把它和正确的选项一起使用。
用"Y"
代替'Y'
是,strcmp接受两个参数作为字符串。
如果应用程序崩溃,并得到分段错误,这意味着您正在访问一些未经授权的内存位置。检查是否为"reportParameterArray"分配了内存。