相关疑难解决方法(0)

为什么strncpy不安全?

我想找出为什么strncpy被认为是不安全的.有没有人有关于此的任何文档或使用它的漏洞利用示例?

c c++ string strncpy

65
推荐指数
4
解决办法
5万
查看次数

无法修改C字符串

请考虑以下代码.

int main(void) {
    char * test = "abcdefghijklmnopqrstuvwxyz";
    test[5] = 'x';
    printf("%s\n", test);
    return EXIT_SUCCESS;
}

在我看来,这应该打印abcdexghij.但是,它只是终止而不打印任何东西.

int main(void) {
    char * test = "abcdefghijklmnopqrstuvwxyz";
    printf("%s\n", test);
    return EXIT_SUCCESS;
}

然而,这工作得很好,所以我误解了操纵C字符串或其他东西的概念吗?如果它很重要,我正在运行Mac OS X 10.6,它是我正在编译的32位二进制文​​件.

c cstring

8
推荐指数
2
解决办法
3545
查看次数

字符串文字的修改是否保证在C中有效?

请考虑以下代码:

int main() {
    char *p = "abcd";
    p[0] = 'x';
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

是否可以通过标准保证在任何环境中工作?

我担心一些编译器决定将字符串存储的内存标记为只读,并尝试修改它会在运行时生成分段错误.但是,在我测试过的所有环境中,它都有效.

c

-2
推荐指数
1
解决办法
47
查看次数

标签 统计

c ×3

c++ ×1

cstring ×1

string ×1

strncpy ×1