我正在编写一个程序来分隔逗号分隔值和日期:
。我没有得到理想的输出。标记我需要在程序中更改的内容。
输入:0,0,2,150,123,0,0,1,0,0,0,53,-13,0,102000666,102000665,-,604400000000,-,-,-,-,123456,123,0,0,12:29:2010:7:15:24
输出:0 0 2 150 123 0 0 1 0 0 0 53 -13 0 102000666 102000665 - 604400000000 - - - - 123456 123 0 0 12 29 2010 7 15 24
预期输出:0 0 2 150 123 0 0 1 0 0 0 53 -13 0 102000666 102000665 - 604400000000 - - - - 123456 123 0 0 1229201071524
请仅检查日期格式。
我的方法
#include<stdio.h>
int main()
{
char * t = NULL;
char * line = "0,0,2,150,123,0,0,1,0,0,0,53,-13,0,102000666,102000665,-,604400000000,-,-,-,-,123456,123,0,0,12:29:2010:7:15:24";
char * s = NULL;
char temp1[1000] = {0};
char temp2[1000] = {0};
for( s=line,t=temp1; s && *s; s++,t++)
{
*t = *s;
if(*t==',')
{
*t=' ';
if(*(s+1)==',')
{
t++;
*t='-';
}
}
}
for( s=temp1,t=temp2; s && *s; s++,t++)
{
*t = *s;
if(*t == ':')
{
*t=' ';
if(*(s+1)==':')
{
t++;
*t='-';
}
}
}
printf("%s",temp2);
return 0;
}
答案 0 :(得分:1)
#include<stdio.h>
int main(){
const char *line="0,0,2,150,123,0,0,1,0,0,0,53,-13,0,102000666,102000665,-,604400000000,-,-,-,-,123456,123,0,0,12:29:2010:7:15:24";
const char *t;
char temp[1000] = {0};
char ch, *s = temp;
for(t=line;ch=*t;++t){
if(ch == ':')
continue;
*s++ = ch == ',' ? ' ' : ch;
}
//*s='\0';
printf("%s",temp);
return 0;
}
答案 1 :(得分:0)
你不应该在for循环中增加变量t。
答案 2 :(得分:-1)
尝试并测试:-) 在codepad :: http://codepad.org/Yak3rXO2
上for( s=temp1,t=temp2; s && *s; s++,t++)
{
*t = *s;
if(*t == ':')
{
s++ ;
*t = *s ;
}
}
当遇到“:”时,您所要做的就是复制下一个元素。您正尝试将其替换为“Space”。因此,在每次出现“:”时,将s
增加到指向下一个字符,然后将其复制到temp2
。