c - 当 p 指向一个字符时,strcmp(p, "\n") 是未定义的行为吗?

标签 c string pointers c99 undefined-behavior

检查最小值:

#include <stdio.h>
#include <string.h>

int main(void) {
    char newline = '\n';
    char* p = &newline;
    if(strcmp(p, "\n") == 0) {
        printf("ok\n");
    } else {
        printf("wrong\n");
    }
    return 0;
}

这是未定义的行为吗?或者它只是错误的(即它总是返回不相等)?不管是什么,请解释原因!

最佳答案

它是 UB 的原因很简单,p 不是空终止字符串,如果输入非空终止字符串,strcmp 是 UB。

关于c - 当 p 指向一个字符时,strcmp(p, "\n") 是未定义的行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33084153/

相关文章:

比较字符串与十六进制字符串

c - 如何调试 Apache 模块

c - 为什么这是有效的 C

r - 如何在字符串中添加值

C++,需要错误 : cannot convert parameter 1 from 'char *' to 'const char *&' 的原因

c - ID 的单个字符转为字符串

Android 应用程序翻译不工作

java - 如何在没有局部变量的情况下一次一个字符地反向打印字符串

c++ - 通过指针比较

c++ - 是否可以将一个类的插槽或常规函数连接到另一个类的插槽或常规函数? (QT)