考虑以下计划
public ActionResult Index()
{
foreach (var r in db.Details.Where(emp => emp.DateExpired.HasValue && emp.DateExpired.Value == DateTime.Today))
{
r.Expire = true;
}
db.SaveChanges();
return View();
}
它将是段错误。但是,如果我将* str更改为str [80],它就不会。这是为什么?
由于
答案 0 :(得分:3)
问题在于类型错误。
char *str = "This is a test.";
它可能会说char*
,但右边的东西实际上是char const*
(C在允许类型双关语中是非常宽松的(是正确的单词))。任何修改const的尝试都是未定义的行为。
函数strtok()
实际上修改了基础字符串(通过插入' \ 0')所以这是未定义的行为。
通过执行修复。
char str[] = "This is a test.";