一.字符串的分割
#include<stdio.h>
int split(char text[],char* part[])
{
int count = 0;
int start = 0;
int stop = 0;
int flag = 0;
for(int i = 0;!stop;i++)
{
char ch = text[i];
if(ch == 0)
{
stop = 1;
}
if(ch==','||ch==' '||ch=='\0'||ch=='\t')
{
if(flag)
{
flag = 0;
text[i] = 0;
part[count] = text + start;
count++;
}
}
else
{
if(!flag)
{
flag = 1;
start = i;
}
}
}
return count;
}
int main()
{
char text[] = "hello, ,world,,good moring";
char* part[10];
int count = split(text,part);
for(int i = 0; i<count;i++)
{
printf("%s\n",part[i]);
}
return 0;
}
这里使用的方法是将 那些分隔符号 直接改为\0,这样就可以看为几个小的字符串,之后只要知道字符串的队首就可以知道这个字符串。
二.sprintf和sscanf 的使用
1.sprintf
这是用来格式化字符串
int main()
{
char buf[128];
sprintf(buf,"Name:%s Age:%d","houwei",20);
printf("%s",buf);
return 0;
}//格式化字符串
笔者想到的一个用途就是在存储学生信息时可以用这种方法
2.sscanf
用于提取字符串,一般用于提取数字,如果想要提取字符,可用上述字符串分割的办法。
int main()
{
const char* text = "2019-1-20";
int year,month,day;
int n = sscanf(text,"%d-%d-%d",&year,&month,&day);
if(n!=3)
{
printf("Bad format\n");
}
else
{
printf("%d %d %d",year,month,day);
}
return 0;
}
三.随机函数
这些都需要头文件包括
#include<stdlib.h>
#include<time.h>
1.生成随机数
int main()
{
//int seed = time(NULL);
//srand(seed);
srand(time(NULL));//为的是使每次rand的数都不一样
for(int i=0;i<10;i++)
{
printf("%d\n",rand()%33+1);//对rand进行取模,使值控制在想要的范围内。
}
}
2.生成当前的时间
int main()
{
time_t now = time(NULL);//指从1970-1-1 00:00:00,到现在经过的秒数。
tm info = *localtime(&now);//tm是一个结构体变量,在java中也有类似的。
//tm * localtime(const time_t *p)
int year = info.tm_year+1900;
int mon = info.tm_mon+1;
int day = info.tm_mday;
int hour = info.tm_hour;
int min = info.tm_min;
int sec = info.tm_sec;
printf("%d-%d-%d-%d-%d-%d",year,mon,day,hour,min,sec);
return 0;
}
/*struct tm
{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;//0-11,所以在算的时候要加一
int tm_year;//实际的年数要加上1900
int tm_wday;//星期几 0-6,0是周日
int tm_yday;//这一年的第几天
}*/