【发布时间】:2023-09-28 06:34:01
【问题描述】:
我做了这样的事情:
/* convert the argv[1] into Integer and store the result in key
* using library function: strtol() to do it */
char **flag = NULL;
key = strtol(argv[1], flag, 10);
// if argv[1] is not all digits
if (**flag != '\0')
{
printf("Usage: ./caesar key\n");
return 1;
}
但它会引发分段错误。我不知道为什么。
在 C 文档中,strtol 的原型为 long int strtol(const char *nptr, char **endptr, int base)。为什么会出现分段错误?
当将部分代码更改为char *flag、strtol(argv[1], &flag, 10) 和if (*flag != '\0') 时,一切正常。
我了解(某种程度上)进行编辑如何更正代码。但是,我不知道为什么原始代码不起作用。有人知道吗?
【问题讨论】:
标签: c pointers segmentation-fault strtol