求教C语言中字符串的处理问题

例如一个字符串"20110930122059",想把它转化为"2011/09/30 12:20:59"这种字符串,该怎么实现呢?谢谢

第1个回答  2011-10-04
这其实就是字符串数组插入,定义一个足够大的数组存放第一个串,然后依次插入后面的符号,得出的数组就存放了你要的那个串。c中字符串就是用数组处理的,不存在字符串变量。如果是大量的类似的串转化,就用二维数组将插入过程循环。
第2个回答  2011-10-08
先用结构体强转,然后再重新拼接

#include<stdio.h>
#include<string.h>

typedef struct Date_Time {
char szYear[4];
char szMonth[2];
char szDay[2];
char szHour[2];
char szMinute[2];
char szSecond[2];
}DATE_TIME;
void main()
{
char *pszOrigin = "20110930122059";
DATE_TIME* pstDateTime = NULL;
char szOutput[32] = {0};
char *pstTemp = szOutput;
pstDateTime = (DATE_TIME*)pszOrigin;

strncpy(pstTemp,pstDateTime->szYear,4);
pstTemp+=4;
strncpy(pstTemp,"/",1);
pstTemp+=1;
strncpy(pstTemp,pstDateTime->szMonth,2);
pstTemp+=2;
strncpy(pstTemp,"/",1);
pstTemp+=1;
strncpy(pstTemp,pstDateTime->szDay,2);
pstTemp+=2;
strncpy(pstTemp," ",1);
pstTemp+=1;
strncpy(pstTemp,pstDateTime->szHour,2);
pstTemp+=2;
strncpy(pstTemp,":",1);
pstTemp+=1;
strncpy(pstTemp,pstDateTime->szMinute,2);
pstTemp+=2;
strncpy(pstTemp,":",1);
pstTemp+=1;
strncpy(pstTemp,pstDateTime->szSecond,2);
pstTemp+=2;
printf("%s\r\n",szOutput);
return;

}本回答被提问者采纳
第3个回答  2011-10-04
用C++做可以不?c处理字符串有点麻烦
用c做的~
#include<stdio.h>
#include<string.h>
void main()
{
char pOriginaltm[]="20110930122059";
char pYear[6]; //年
char pMonth[4]; //月
char pDay[4]; //日
char pHour[4]; //时
char pMinite[4]; //分
char pSecond[3]; //秒
char pNowtm[20]; //转换后
memset(pYear,'\0',6);
memset(pMonth,'\0',4);
memset(pDay,'\0',4);
memset(pHour,'\0',4);
memset(pMinite,'\0',4);
memset(pSecond,'\0',3);
memset(pNowtm,'\0',20);
strncpy(pYear,pOriginaltm,4);
pYear[4]='/';
for(int iM=0;iM<2;iM++)
{
pMonth[iM]=pOriginaltm[4+iM];
pDay[iM]=pOriginaltm[6+iM];
pHour[iM]=pOriginaltm[8+iM];
pMinite[iM]=pOriginaltm[10+iM];
pSecond[iM]=pOriginaltm[12+iM];
}

pMonth[2]='/';
pDay[2]=' ';
pHour[2]=':';
pMinite[2]=':';
strcat(pNowtm,pYear);
strcat(pNowtm,pMonth);
strcat(pNowtm,pDay);
strcat(pNowtm,pHour);
strcat(pNowtm,pMinite);
strcat(pNowtm,pSecond);
printf("转换结果:%s\n",pNowtm);
}
做的是固定转换这个字符串的
想动态手动输入字符串,然后转换的话,稍微改下就可以了
第4个回答  2011-10-04
字符插入呀,比如在下标为4的地方插入"/"就先把4--'\0'间的元素全部向后移一位,再把[4]='/'
第5个回答  2011-10-04
嗯,插入问题~
相似回答