我有一个字符数组,形式为mm/dd/yy
(用户被要求输入日期)。
我该如何拆分这个数组,删除/
,并将mm
、dd
和yy
放入3个不同的整数中?
int m, d, y;
sscanf("05/18/11", "%02d/%02d/%02d", &m, &d, &y);
#include <stdlib.h>
#include <string.h>
int main()
{
int month, day, year;
char mystr[10] = "05/18/11";
month = atoi(strtok(mystr, "/"));
day = atoi(strtok(NULL, "/"));
year = atoi(strtok(NULL, "/"));
return 0;
}
strtok() 是一个函数,第一次调用需要传入一个字符串和一个分隔符来进行拆分。在第一次调用后,如果将第一个参数设置为NULL,则它将继续对相同的字符串进行标记化处理。atoi
将字符串转换为整数。
如果你的输入非常规范,sscanf 是一个不错的选择。
首先,找到最近的'/'
:
int i;
char *d = date;
for(i = 0; date[i] != '/'; ++i);
然后应用 "substring":
strncpy(dd, date, i);
重复此过程:
d = date + i + 1;
for(; date[i] != '/'; ++i);
strncpy(mm, d, i - (d - date));
然后从最后一个 '/'
到字符串结尾即可:
d = date + i + 1;
strncpy(yy, d, strlen(date) - i);
strtol(3)
可能是开始的最佳函数。 - sarnold