gpt4 book ai didi

c - 关于运行 strtol 后剩下的内容

转载 作者:行者123 更新时间:2023-11-30 18:45:29 25 4
gpt4 key购买 nike

我无法理解 C 语言中 strtol() 的行为。例如,当我测试字符串 "4396" 时,如果我有:

char *test = " 4396";
char *ptr;
int result = strtol(test, &ptr, 10);
printf("%d\n", result);
printf("%d\n", strlen(ptr));

输出:

4396
//not 0

我只是想知道为什么长度不是0,因为我已经检查到最后了?

感谢您的帮助。

最佳答案

以下建议代码:

  1. 干净地编译
  2. 执行所需的功能
  3. 注意对几项陈述的更正
  4. 注意头文件的添加
  5. 注意添加的函数:main()
  6. 在编程中,细节很重要

现在建议的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main( void )
{
char* test = " 4396";
char *ptr;
long result = strtol(test,&ptr,10); // note the change from `int` to `long`
printf("%ld\n",result); // note the change from'%d' to '%ld'
printf("%zu\n",strlen(ptr)); // note the change from '%d' to '%zu'
}

建议代码的输出是:

4396
0

请注意,第二个输出为 0,因为 strlen() 不计算尾随 NUL 字节,并且 ptr 指向 NUL 字节

关于c - 关于运行 strtol 后剩下的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54601444/

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