玩编程实际上在很多时候就是在玩字符串,把字符串玩熟了,基本功就打扎实了,基本上来说任何程序都可以写了,后面的事无非就是写新功能模块或者解bug。
现有一任务,把这个时间截取出来,并不用系统提供的函数(strtok,strcpy,strncpy):2015.11.19|18:43:33
程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//分离字符串并按整型输出
int main()
{
char p[32]="2015.18.17|14:58:30";
char* ptr=p;
char* tmp=malloc(32);
int year=0,moth=0,day=0;
int hour=0,min=0,sec=0;
int k=0,n=0;//n用于记录指针现在所在位置,k记录跳过的分隔符
int i=0,j=0;
while(*(ptr+i)!='.')
{
*(tmp+i)=*(ptr+i);
i++;
n++;
}
*(tmp+i)='\0';
year=atoi(tmp);
printf("year:%d ",year);
memset(tmp, 0, 32);
k++;
i=n+k;
while(*(ptr+i)!='.')
{
*(tmp+j)=*(ptr+i);
i++;
j++;
n++;
}
*(tmp+i)='\0';
moth=atoi(tmp);
printf("moth:%d ",moth);
memset(tmp, 0,32);
k++;
i=n+k;
j=0;
while(*(ptr+i)!='|')
{
*(tmp+j)=*(ptr+i);
i++;
j++;
n++;
}
*(tmp+i)='\0';
day=atoi(tmp);
printf("day:%d\n",day);
memset(tmp, 0,32);
k++;
i=n+k;
j=0;
while(*(ptr+i)!=':')
{
*(tmp+j)=*(ptr+i);
i++;
j++;
n++;
}
*(tmp+i)='\0';
hour=atoi(tmp);
printf("hour:%d ",hour);
memset(tmp, 0,32);
k++;
i=n+k;
j=0;
while(*(ptr+i)!=':')
{
*(tmp+j)=*(ptr+i);
i++;
j++;
n++;
}
*(tmp+i)='\0';
min=atoi(tmp);
printf("min:%d ",min);
memset(tmp,0,32);
k++;
i=n+k;
j=0;
while(*(ptr+i)!='\0')
{
*(tmp+j)=*(ptr+i);
i++;
j++;
n++;
}
*(tmp+i)='\0';
sec=atoi(tmp);
printf("sec:%d\n",sec);
return 0;
}