2021寒假专题6
C语言库函数的终章
C语言库函数粗略地学习了一部分,以后使用这些现成的函数再进一步学习,修正
字符串转数字、伪随机数、字符串、时间和日期
include <stdlib.h>
#include <stdio.h>
//字符串转数字 
int main()
{
	//atof函数,将字符串转换为浮点数
	//碰到一个非字母型的字符就会停止,所以最好输入数字字符串,否则会出现难以预料的结果 
	//double x=atof("df12.3");//x=0.0
	double x=atof("12.3df3h"); //x=12.3
	//printf("%lf",x); 
	//atoi函数,将字符串转换为整数
	int y=atoi("123.9");//y=123
	//printf("%d",y); 
	
	 
	//strtol函数 long strtod(char*,char**,base)前一个参数是字符串的起始点,后一个参数是结束地址的地址,base是转换的进制 
	//strtol函数可舍弃空白字符直到第一个非空白字符
	//char str[8]="ab123";
	//char *start=str+2;
	//char *end;
	//long num=strtol(start,&end,10);
	//printf("%ld",num);
	//strtod函数用法类似,只是内部只有两个参数 double strtod(char*,char**) 
	char *start="123.45";
	char *end;
	printf("%.2lf",strtod(start,&end));
include <stdlib.h>
    #include <stdio.h>
#include <time.h> 
int main() 
{
	//rand() 产生一个伪随机数
	//srand() 播种伪随机数生成器
	//printf("%d",RAND_MAX); //表示能产生的最大随机数
	for(int i=0;i<5;i++)
		printf("%d\n",rand());
	//rand()函数调用一次,当程序下一次再次使用仍产生相同的随机数
	srand(10);
	for(int i=0;i<5;i++)
		printf("%d\n",rand());
	//用时间播种比较常见
	srand(time(NULL));
	for(int i=0;i<5;i++)
		printf("%d\n",rand());
	//产生100-1000范围内的随机数,rand%901+100 
}
include <string.h>
  #include <stdio.h>
//之前已有介绍,部分略过 
int main()
{
	//char* strcpy(char*,const char*) 后者复制给前者,前者的空间必须大于后者,返回前者的指针
	//char* strncpy(char*,const char*,t) t表示最多所复制的字符数(不包括空字符) 
	//char str1[]="Apple";
	//char str2[]="Banana";
	//strncpy(str2,str1,sizeof(str2)-1); str2[sizeof(str2)-1]='\0';//strlen(str2)=sizeof(str2)-1
	//printf(str2); 
	
	//char* strcat(char*,const char*) 后者的内容追加到前者的末尾,剩余空间必须容纳后者(包括空字符),并返回前者的指针 
	//char* strncat(char*,const char*,t)
	char str1[]="def";
	char str2[6]="abc";
	strncat(str2,str1,sizeof(str2)-strlen(str2)-1); 
	//printf(str2);
	
	//int strlen(char*)不包括空字符 
	
	//int strcmp(*char,*char)前者比后者大,返回大于0
	//比较方式:从前往后比较ASCII值,只要比出结果就返回,不再考虑后面的情况
	//空格符<0-9<A-Z<a-z 
	
	//char* strchr(*char,char)查找第一个出现在字符串的指定字符,返回指针
	//char* strrchr(*char,char) 查找最后一个出现在字符串的指定字符,返回指针
	 
	//printf("%p\n%p",str2,strrchr(str2,'c'));
	//strpbrk
	//char* strstr(char*,char*) 子字符串查找,不仅仅是单个字符,功能比较强大 
	char str[]="weerhvbwerjk";
	//printf("%p %p",str,strstr(str,"wer"));
	
	int a[5]={12,46,23,9,6};
	//void* memchr(void *,int c,size_t) 在内存中搜索中首次出现的位置,t表示搜索多少内存结束 
	//printf("%p\n%p",a,memchr(a,9,sizeof(int)*5));
	int b[6]={12,46,23,9,5,6}; 
	//int memcmp(void*,void*,size_t) 比较两个内存块,方式与strcmp相同 
	//printf("%d",memcmp(a,b,sizeof(int)*5));
	//void* memset(void*,n,size_t)
	//memset的复制一般赋0或者空字符,切不可想赋初值20,n就为20,memset是按字节赋值
	memset(a,0,sizeof(a));//重置数组
	struct sample{int q};struct sample sa;
	//memset(&sa,0,sizeof(struct sample));//重置结构
	struct sample sam[10];
	memset(sam,0,sizeof(struct sample)*10);//重置结构数组  
	printf("%d",a[0]); 
	//void* memcpy(void* s1,void* s2,t)
	//memcpy(a,b,sizeof(b)) a要分配足够大的内存空间,且copy的长度与后面的参数有关,类型不限 
	//memmove 重叠内存copy void* memcpy(void* s1,void* s2,t)
	//memmove(a+1,a,3*sizeof(int));
	//strerror()打印各种错误信息
	 
}
include <time.h>
    #include <stdio.h>
#include <locale.h> 
int main()
{
	 
	/*long a;
	scanf("%ld",&a);
	clock_t start=clock();//在输入后开始计时,否则人为的输入会浪费时间 
	
	for(int i=0;i<10000;i++)
		for(int j=0;j<10000;j++)
			a++;
	printf("%ld\n",a);
	
	clock_t end=clock();
	printf("Time used:%.2f\n",(double)(end-start)/CLOCKS_PER_SEC);//clocks per sec
	//该程序可以检查算法的快慢 
	*/
	time_t now=time(NULL);
	
	//char* ctime(*time_t)
	//printf(ctime(&now));//打印当前时间
	
	//格式化与本地化
	struct tm *lt=localtime(&now);
	//struct tm *lt=gmtime(&now);//世界协调时间 
	setlocale(LC_ALL,"chs");
	char ch[100];
	strftime(ch,100,"%A %c",lt); //第三个参数决定打印的格式,种类很多,%A表示全工作日名称,%c标准日期时间 
	printf(ch);
	
} 

                
            
        
浙公网安备 33010602011771号