c - strtol 重用参数

标签 c pointers strtol

此代码似乎按预期工作,使用单个指针填充数字数组

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

int main(void)
{
    int arr[4], count = 0, i;
    char *p, s[32] = "  \t  10,  15  \n  ,20,   25  , ";

    p = s;
    do {
        arr[count++] = (int)strtol(p, &p, 10);
        while (isspace(*p) || *p == ',') p++;
    } while (*p);
    for (i = 0; i < count; i++) {
        printf("%d\n", arr[i]);
    }
    return 0;
}

我的问题是:

在strtol中使用p作为param1(source)和&p作为param 2(第一个无效字符的地址)是否有效?

最佳答案

是的,它是安全的。第一个参数按值传递,所以 strtol具有不受写入第二个参数的更改影响的本地副本。

关于c - strtol 重用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13952015/

相关文章:

c - 使用 strtol 的十六进制数 (str) 解释

c - 为什么 sem_t 指针必须从 4 偏移量的倍数开始?

c - 在 C 函数中返回 char 数组

c++ - 使用指针的冒泡排序

c - 给菜鸟的C语言指针

c++ - 如何将 32 个字符的二进制字符串转换为十六进制?

c - 从文件读取时如何跳过字符串中的空格

通过指针改变值

c - 对数组类型 C 的表达式进行赋值

c - 在没有 errno 的情况下实现 strtol() 是否更好?