我正在使用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;
}
此代码当前返回总线错误,我不明白为什么。我是一个相对初学者,很抱歉,如果我做了一些愚蠢的事情。任何意见将不胜感激,谢谢您的时间。
答案 0 :(得分:1)
char strings[][10]
应为char strings[][11]
以考虑尾随空字符。
您似乎将每个日期解析为dates
数组中的三个条目 - 这是意图吗?
答案 1 :(得分:1)
要独立提取年份,日期和月份并将它们放在同一个数组中,您可以将年份组合在一起,然后是几个月,然后是几天(假设日期格式为yyyy-mm-dd
)。这样的数组可以存储以下序列:
y1, y2, y3, m1, m2, m3, d1, d2, d3
以下代码在数组ymd
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 2
int main()
{
int i;
char strings[SIZE][11] = {"2010-05-01", "2010-10-01" };
int ymd[SIZE*3];
for (i = 0; i < SIZE; i++) {
ymd[i*3] = atoi(strtok(strings[i], "-"));
ymd[i*3+1] = atoi(strtok(NULL, "-"));
ymd[i*3+2] = atoi(strtok(NULL, "-"));
}
for (i = 0; i < SIZE; i++)
printf("%d/%d/%d\n", ymd[i*3], ymd[i*3+1], ymd[i*3+2]);
return 0;
}
输出将是:
2010/5/1
2010/10/1