我正在尝试将子字符串转换为整数但我得到此输出
int main()
{
char buf[50] = "210-567-12-2040-34567890.txt";
char* pStart = buf;
char* pCurrent = buf;
while(*pCurrent != '\0')
{
if (*pCurrent == '-' || *pCurrent == '.')
{
uint32_t val = strtoul(pStart, NULL, 10);
pStart = pCurrent+1;
printf("%ul\n",val);
}
++pCurrent;
}
return 0;
}
我收到了这个输出
210l
567l
12l
2040l
34567890l
为什么会有l
?
答案 0 :(得分:0)
这里的一些答案正是您所寻找的:What is the difference between char s[] and char *s?
简短回答是两者作为函数参数没有区别。您可以将char* pStart
变量传递到strtoul
,就像将char str[20]
变量传递给它一样。这将使它直接从任何内存地址pStart
中读取字符串,无需先复制到数组中。