gpt4 book ai didi

c - 数组变得比声明的大

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:16 24 4
gpt4 key购买 nike

<分区>

我正在编写一个函数,该函数应该在“-”上拆分字符串并返回包含字符串部分的数组,因此如果字符串是:2017-10-23我希望数组填充三个元素,例如:arr[0] = 2017,arr[1] = 10,arr[2] = 23

这是函数:

/* 
* return a array of the parts of date_string
*/
int * to_date_array(char *date_string)
{
int i = 0;
int f = 0;
char *tokens = strtok(date_string, "-"); /* get initial token */
static int arr[3] = {0, 0, 0};
char *ptr;
int val;

/* init static arr */
for (f = 0; f < sizeof(arr); f++)
arr[f] = 0;

/* do the split */
while (tokens != NULL) {
val = strtol(tokens, &ptr, 10);
arr[i++] = val;
tokens = strtok(NULL, "-");
}

/*
* for some reason arr becomes 12 elements long?
* I expected it to have 3 elements
*/
puts("func: to_date_array");
puts("------------------------");
for (f = 0; f < sizeof(arr); f++)
printf("arr[%d]: %d\n", f, arr[f]);

return arr;
}

该函数有效,但我真的对“arr”数组感到困惑。我希望它有三个元素长,但是当我遍历它并打印每个元素时,它显示 12 个元素?

$ gcc -Wall main.c arguments.c -o timespan 
$ ./timespan 2015-08-10 2017-10-18
func: to_date_array
------------------------
arr[0]: 2015
arr[1]: 8
arr[2]: 10
arr[3]: 0
arr[4]: 0
arr[5]: 0
arr[6]: 0
arr[7]: 0
arr[8]: 0
arr[9]: 0
arr[10]: 0
arr[11]: 0

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