C/C++字符串的分割以及常用函数和随机函数的使用

一.字符串的分割

#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;//这一年的第几天 
 }*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值