gpt4 book ai didi

c++ - Strtol 第二个参数

转载 作者:行者123 更新时间:2023-11-28 03:37:57 24 4
gpt4 key购买 nike

strtol 的第二个参数是如何工作的?

这是我尝试过的:

strtol(str, &ptr, 10)

其中 ptr 是一个 char *str 是一个字符串。现在,如果我将 str 作为 '34EF' 传递,并打印 *ptr,它会正确地给我 E , *(ptr+1) 给我 F,但是如果我打印 ptr,它给我 EF! 打印 ptr 不应该只是导致像十六进制地址之类的垃圾值吗?

最佳答案

ptr是指向空终止字符串内部的指针。所以给出"34EF"它最终指向字符 'E'并且从该地址开始的字符串是 "EF" .

一个四字符的 C 字符串,如 p = "34EF"实际上包含五个字符串。字符串 p"34EF" .字符串 p+1"4EF" ;字符串 p+2"EF" ; p+3"F"p+4是空字符串 "" .在这种情况下 p+4指向 F 之后的空终止符字节.

说到空字符串,如果输入strtol仅由构成数字标记的有效字符组成,然后是 ptr应该指向一个空字符串。

如果你想禁止尾随垃圾,你可以测试这个。也就是说,即使解析出一个有效数字,如果*ptr不为 0,则输入有尾随垃圾。在某些情况下,最好拒绝:“尊敬的用户,10Zdf 不是数字;请输入数字!”

关于c++ - Strtol 第二个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10289661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com