回答
我会用的sscanf解析字符串:
int m, d, y;
sscanf("05/18/11", "%02d/%02d/%02d", &m, &d, &y);
这将解析日期为三个整数值。
另外,要验证输入数据是否格式正确,还应该检查sscanf是否返回3,表示所有三个值都已正确解析。请参阅以下working example,其中包括一些基本的错误检查。
我就是这么做的。 +1 – Swift 2011-05-19 01:47:09
您应该在链接代码中包含错误检查。 – 2011-05-19 01:50:20
@Fred:添加了一些关于错误检查的进一步说明。 – 2011-05-19 01:58:23
#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是好的。
请不要使用atoi解析用户输入。它无法检测错误。 – 2011-05-19 01:51:56
首先,找到最近的'/'
:
int i;
char *d = date;
for(i = 0; date[i] != '/'; ++i);
然后申请一个 “子”:
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);
OP问题的格式是'/'。如果它是\,那么你将不得不使用'\\'。 \符号在C字符串中有特殊的含义。 – Lundin 2011-05-19 06:36:33
@downvoters我知道我有点晚了,但谨慎解释downvote? (除了效率低于上述答案 - 我是一名C++程序员。) – 2011-07-21 05:21:43
- 1. 将字符数组转换为整数
- 2. 将字符数组转换为整数
- 3. 将字符数组转换为整数
- 4. 将整数数组转换为数字
- 5. 将整数转换为数组数字
- 6. 将“整数字符串”转换为整数数组
- 7. C++将整数字符串转换为整数数组?
- 8. 转换字符数组为整数
- 9. 转换字符串数组为整数
- 10. 在C++中将字符数组转换为整数字符串
- 11. 如何将字符串数组转换为整数数组?
- 12. 将字符串数组转换为整数数组
- 13. 将字符串数组转换为整数数组
- 14. 将字符串数组转换为整数数组
- 15. numpy将分类字符串数组转换为整数数组
- 16. 转:将数组中的字符串转换为整数
- 17. MATLAB - 将数字字符数组转换为数字整数数组/矩阵?
- 18. 将字符串数组转换为整型数组android
- 19. 从SQLite将字符串数组转换为整型数组
- 20. 将2d字符串数组转换为2d整型数组
- 21. 将无符号字符数组转换为整数
- 22. 将26个整数的数组转换为字符(字母)
- 23. 将Ruby字符串转换为整数数组的字节?
- 24. 将整数转换为字符数组(字节)
- 25. 将包含整数数组的字符串转换为整数数组in java
- 26. 将整数转换为数组数组
- 27. 转:将字符串数组转换为Json数组字符串
- 28. C将字符命令行参数转换为整数数组
- 29. 将整数转换为字符数组函数
- 30. 在matlab中将整数字符转换为数值数组
'strtol(3)'可能是最好的功能。 – sarnold 2011-05-19 01:40:39