C 如何使用断言检查字符串是否包含字符?

C 如何使用断言检查字符串是否包含字符?,c,C,如何使用断言检查字符串是否包含字符?例如,仅当字符串中有“+”时,我才想用它做一些事情。如何在C中使用assert?您可以使用strchr和assert函数 char x[20] = "hello+"; assert(strchr(x,'+') != NULL); strchr(x,“+”)将返回NULL如果在字符串中找不到字符,因此您可以使用其返回值来断言 据 如果表达式为false(即比较等于零),则断言() 将错误消息打印到标准错误并终止程序 通过调用abort(3)。错误消息包括文

如何使用断言检查字符串是否包含字符?例如,仅当字符串中有“+”时,我才想用它做一些事情。如何在C中使用assert?

您可以使用
strchr
assert
函数

char x[20] = "hello+"; 

assert(strchr(x,'+') != NULL);
strchr(x,“+”)
将返回
NULL
如果在
字符串中找不到字符
,因此您可以使用其返回值来
断言

如果表达式为false(即比较等于零),则断言() 将错误消息打印到标准错误并终止程序 通过调用abort(3)。错误消息包括文件名 和包含assert()调用的函数,源代码行 调用的编号和参数的文本;比如:

根据

strchr()和strrchr()函数返回指向匹配 字符,如果找不到该字符,则为NULL。终止 null字节被认为是字符串的一部分,所以如果指定了c 作为“\0”,这些函数返回指向终止符的指针


我认为您根本不想在这里使用assert。Assert用于强制执行有效条件,这些条件是错误的编程错误。断言有助于发现bug。它们不用于测试用户输入。我建议查看assert手册页。它是一个诊断工具:甚至在
asset()
的手册页上更进一步:“assert()是作为宏实现的;如果测试的表达式有副作用,程序行为将根据是否定义了NDEBUG而有所不同。这可能会创建heisenbug,当调试打开时会消失。”