2
A
回答
8
0
0
2
假设你的字符串作为char* str
或char str[]
,你可以试试这个:
int day,mon,year;
sscanf(str,"%d-%d-%d",&day,&mon,&year);
或者你可以试试这个,一个稍微更好的性能(通过避免来电sscanf
):
int year = 1000*(str[6]-'0')+100*(str[7]-'0')+10*(str[8]-'0')+(str[9]-'0');
1
可以使用strtok()功能分割字符串(并指定分隔符使用)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *date = malloc(10);
char *day = NULL;
char *month = NULL;
char *year = NULL;
strcpy(date, "01-03-2014");
day = strtok(date, "-");
printf("%s\n",day);
month = strtok(NULL, "-");
printf("%s\n",month);
year = strtok(NULL, "-");
printf("%s\n",year);
free(date);
return 0;
}
输出:
01
03
2014
0
作为其它建议"%d-%d-%d"
。
要添加错误检查,应该在代码需要确保没有尾随的垃圾,所有在那里:
char date[80];
fgets(data, sizeof date, stdin);
int d,m,y;
in n;
int cnt = sscanf(date, "%d-%d-%d%n", &d, &m, &y, &n);
if (cnt == 3 && date[n] == '\n') Good();
else Bad();
相关问题
- 1. 提取数字从一个字符串
- 2. 如何在C#中提取字符串一个字符串的
- 3. 如何从字符串中提取数字到一个数组
- 4. 如何从字符串中提取一个字符串
- 5. 如何从另一个字符串中提取字符串php
- 6. 从c中的一个字符串中提取双倍数字
- 7. 从一个单词字符串中提取一个数字
- 8. 如何从字符串中提取字符串的第一个数字
- 9. 从一个字符串中提取两个子字符串
- 10. 从一个字符串中提取两个子字符串
- 11. 从字符串数组中获取第一个字符串c
- 12. 从C#中的字符串中提取第一个数字字符
- 13. 如何从字符串中提取多个数字C
- 14. 从c中的对象中提取一个字符串数组#
- 15. 从Ruby中的一个长字符串中提取字符串
- 16. 如何从这个字符串中提取一个子字符串?
- 17. 不能从一组字符串中取出一个数字 - C
- 18. C#从字符串中提取一个字
- 19. 在Erlang中从一个大字符串中提取一个子字符串
- 20. 如何从一个字符串在SQL Server中提取数值
- 21. 如何从一个字符串中提取特定数量
- 22. 如何从一串数字中提取单个数字?
- 23. 从另一个url或字符串中提取字符串
- 24. 从一个巨大的字符串中提取子字符串
- 25. 使用PHP从另一个字符串中提取字符串
- 26. 需要从一个字符串中提取字符串
- 27. 从另一个字符串中提取字符串
- 28. C - 从另一个字符串中减去一个字符串
- 29. 从一个字符串中提取数字
- 30. 从字符串中提取一个数字
我想我给予好评将使u到给予好评@Rikayan答案:) –