【发布时间】:2014-08-14 21:45:35
【问题描述】:
我正在使用 C 编程语言。我目前有一个二维字符数组,格式为 “2010-05-01”。我想将每个数字转换为整数数据类型,然后将它们存储在整数数组中。这样做的原因是因为我需要一个整数的一维数组,然后我可以使用指针通过引用将其传递给函数。
请在下面查看我当前的代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main()
{
float values[] = { //Contains 100 float literals }
int i, j, size = sizeof(values)/sizeof(*values);
char strings[][10] = {"2010-05-01", "2010-10-01" //Contains a total of 100 dates}
int dates[size * 3];
for (i = 0, j = 0; j < size; ++i, ++j) {
dates[i] = atoi(strtok(strings[j], "-"));
dates[++i] = atoi(strtok(NULL, "-"));
dates[++i] = atoi(strtok(NULL, "-"));
}
for (i = 0; i < size; ++i)
printf("%d\n", dates[i]);
return 0;
}
此代码当前返回总线错误,我不明白为什么。我是一个相对初学者,如果我做了一些愚蠢的事情,很抱歉。任何 cmets 将不胜感激,并感谢您的宝贵时间。
【问题讨论】:
-
您很可能正在将
NULL传递给atoi()。我建议使用一些更简单的示例来玩弄strtok()。 -
当你在循环中增加 i 时,你应该将你的条件更改为 size-2 之类的东西
-
您应该提供一个工作代码,比如说 2 个文字/日期,而不是 100 个缺失。用一个简短的例子来调试它也比一个完整的例子更好。
-
@daouzli 对不起,我应该是一个 j。因此,我编辑了我的问题。是的,这是有道理的,我会尝试一些更简单的版本并发布任何更新。感谢您的帮助
-
对于从字符串日期到数字日期(自纪元以来的秒数)的快速简单转换,您可以使用 strtotime()
标签: c arrays pointers char type-conversion