似乎strtol()
并strtod()
有效地允许(并强制)你抛弃字符串中的常量:
#include <stdlib.h>
#include <stdio.h>
int main() {
const char *foo = "Hello, world!";
char *bar;
strtol(foo, &bar, 10); // or strtod(foo, &bar);
printf("%d\n", foo == bar); // prints "1"! they're equal
*bar = 'X'; // segmentation fault
return 0;
}
上面,我自己没有进行任何演员表。但是,strtol()
基本上将 myconst char *
放入一个char *
for me 中,没有任何警告或任何东西。(事实上,它不允许你键入bar
as a const char *
,因此会强制进行不安全的类型更改。)这不是很危险吗?