精华内容
下载资源
问答
  • 本程序是调用头文件中的函数,显示系统时间
  • c语言代码中的各种常用系统时间调用方法的全面总结和范例
  • C语言调用MATLAB引擎使用体会

    千次阅读 2016-11-15 22:39:09
    前段时间因为需要处理一些大矩阵的计算问题,所以在C语言调用MATLAB代码。用的方法是在程序中启动一个MATLAB引擎进程,然后向其传递MATLAB代码实现计算,然后再从中取出计算结果。当然也有编译MATLAB“.m”文件成...

        前段时间因为需要处理一些大矩阵的计算问题,所以在C语言中调用MATLAB代码。用的方法是在程序中启动一个MATLAB引擎进程,然后向其传递MATLAB代码实现计算,然后再从中取出计算结果。当然也有编译MATLAB“.m”文件成dll的调用方法,怎奈我系统上的MATLAB是2014b,VS是2015,MATLAB不能发现VS2015的编译器,只好暂时放弃此法。
        虽说调用MATLAB引擎的方法成功了,但是当我处理一个较大规模的数据时,效率问题就显现出来的,这种方法太慢了,而且还特别消耗内存(原因不详)。所以建议有大规模数据处理要求的人还是尝试第二种方法,或者放弃调用MATLAB代码的方法。对于我来说,我只想计算一下矩阵的行列式值和矩阵的逆,所以我选择了一个具有C语言接口的开源库OpenCV,虽然只用这个库计算矩阵的确是杀鸡用牛刀,但毕竟环境配置和使用上还是很方便的,最重要的是速度很快,也不会出现之前遇到的内存问题。

    展开全文
  • Linux下用C语言调用Shell命令

    千次阅读 2012-09-10 16:29:12
    Linux下用C语言调用Shell命令   有时候,我们在Linux下编程时,有的功能只需要执行一句系统Shell命令即可实现,省去了我们不少的时间。 一个简单的Hello World的例子,把下面代码复制到Gedit中另存为...
    Linux下用C语言调用Shell命令 
    

            有时候,我们在Linux下编程时,有的功能只需要执行一句系统Shell命令即可实现,省去了我们不少的时间。

    一个简单的Hello World的例子,把下面代码复制到Gedit中另存为test.c,然后用Gcc编译执行即可。

     

    # include
    int main()
    {
        system("echo \"Hello World!\"");//显示Hello World!
        system("ls");//显示当前目录
        char command[]="echo \"Hello World!\"";
        system(command);
    }
    展开全文
  • linux下的c语言系统函数调用

    千次阅读 2018-11-01 16:05:34
    目录 4.linux下的系统函数的使用 c语言 ...4.3系统时间与日期函数的使用 系统时间 时间间隔 4.4环境控制函数   4.linux下的系统函数的使用 c语言 4.1数学函数的使用 pow(x,y) //x的y次方  exp(x) ...

    目录

    4.linux下的系统函数的使用 c语言

    4.1数学函数的使用

    1pow函数

    2.exp函数

    3.log函数

    4.rand()随机数函数

    4.2字符函数的使用

    4.3系统时间与日期函数的使用

    系统时间

    时间间隔

    4.4环境控制函数


     

    4.linux下的系统函数的使用 c语言

    4.1数学函数的使用

    pow(x,y)  //x的y次方 
    exp(x)      //e的x次方
    log(x)      //lnx
    log10(x)  //lg(x)   
    以上返回值参数全double

    1pow函数

    #include<stdio.h>
    #include<math.h>
    int main(){
    	double answer,x,y;
    	scanf("%lf %lf",&x,&y);
    	answer=pow(x,y);
    	printf("%lf的%lf次方等于%lf\n",x,y,answer);
    	return 0;
    }

     

    2.exp函数

    #include<stdio.h>
    #include<math.h>
    int main(){
    	double answer,x;
    	scanf("%lf",&x);
    	answer=exp(x);
    	printf("e的%lf次方等于%lf\n",x,answer);
    	return 0;
    }

     

    3.log函数

    #include<stdio.h>
    #include<math.h>
    int main(){
    	double answer1,answer2,x,y;
    	scanf("%lf %lf",&x,&y);
    	answer1=log(x);//2.718281828
    	answer2=log10(y);//10
    	printf("log(%lf)=%lf\n",x,answer1);
    	printf("log10(%lf)=%lf\n",y,answer2);
    	return 0;
    }

     

    sqrt(x)  求平方根   

    函数都在math.h 里编译时加上-lm    c++编译则不用

     

    4.rand()随机数函数

    先设置随机数种子 否则每次产生的随机数一样
    srand(time(0));

    头文件 #include<stdlib.h>

    int rand(void); //0~2147483674(0~RAND_MAX) 之间的随机数

    模板1:
    rand()/(RAND_MAX+1.0)                 产生:[0,1)
    int(10.0×rand()/(RAND_MAX+1.0))     产生[0,10)
    1+int(10.0×rand()/(RAND_MAX+1.0))     产生[1,10]

    模板2:
    rand()%(N+1)    产生[0,N]
    M+rand()%(N+1)  产生[M,M+N]

     

    4.1.产生10个1到10的随机数

    #include<stdio.h>
    #include "stdlib.h"
    int main(){
    	int i,j;
    	srand((int)time(0));
    	for(i=0;i<10;i++){
    		j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
    		printf(" %d ",j);
    	}
    	printf("\n");
    	return 0;
    }

     

    4.2产生20个[100,1000]的随机数

    #include <stdlib.h>
    #include "stdio.h" 
    int main(){
    	int i,j; 
    	srand((int)time(0)); 
    	for(i=0;i<20;i++){
    		j=100+rand()%901;
    		printf(" %d ",j);
    		if(i==9) printf("\n");
    	}
    	printf("\n");
    }
    

     

    4.2字符函数的使用

    c语言字符函数
    函数名 功能
    isalnum 是否为英文字母或数字
    isalpha 是否为英文字母
    isascii 是否为ascii码字符
    isdigit 是否为阿拉伯数字
    islower 是否为小写英文字母
    isprint 是否为可打印字符
    isspace 是否为空格
    ispunct 是否为标点符号或特殊符号
    isupper 是否为大写英文字母
    isxdigit 是否为16进制数字
    头文件 #include<ctype.h>
    #include<stdio.h>
    #include <ctype.h>
    int main(){
    	char c;
    	while(scanf("%c",&c)==1){
    		if(isalnum(c)) printf("%c是英文字母或数字\n",c);
    		if(isalpha(c)) printf("%c是英文字母\n",c);
    		if(isascii(c)) printf("%c是ascii码字符\n",c);
    		if(iscntrl(c)) printf("%c是ascii码控制字符\n",c);
    		if(isdigit(c)) printf("%c是数字\n",c);
    		if(islower(c)) printf("%c是小写字母\n",c);
    		if(isupper(c)) printf("%c是大写字母\n",c);
    		if(isprint(c)) printf("%c是可打印字符\n",c);
    		if(isspace(c)) printf("%c是空格\n",c);
    		if(isxdigit(c)) printf("%c是16进制数字\n",c);
    		getchar();
    	}
    	return 0;
    }

     

     

    4.3系统时间与日期函数的使用

    系统时间

    系统时间与日期函数
    函数名 功能
    asctime 将时间和日期以字符串格式表示
    ctime 将时间和日期以字符串格式表示
    gettimeofday 取得当前时间
    gmtime 把时间和日期转换为格林尼治(GMT)时间(世界时)
    localtime 取得目前当地的时间和日期,并转换为现在的时间日期表示方法
    mktime 将时间结构数据转换成经过的秒数
    settimeofday 设置当前时间
    time 取得系统当前的时间
    //系统结构体
    struct tm{
    	int tm_sec;  //秒
    	int tm_min;  //分
    	int tm_hour; //时
    	int tm_mday;  //当前月日数
    	int tm_mon;  //月 0~11
    	int tm_year;  //1900至今的年数  1900+p->tm_year得到今年年份
    	int tm_wday;  //一星期的日数 0~6
    	int tm_yday;  //一年内的天数 0~365
    	int tm_isdst;  //夏时制时间	
    };

    头文件#include<time.h>
    time_t time(time_t *t);  
    取得当前时间 其实是返回1970年1月1日0:0:0至今的秒数 
    返回值会直接存到t指向的内存   

    头文件#include<time.h>
    struct tm* gmtime(const time_t* timep);
    将time_t里的秒数转换成现在的时间格式(格林尼治)  返回结构体struct_t

    头文件#include<time.h>
    char* asctime(const struct tm * timeptr);
    将结构体struct_tm里的时间转换成现在使用的时间日期表示法,格式为”Wed Jun 30 16:13:00 2018\n”

    头文件#include<time.h>
    struct tm *localtime(const time_t *timep);
    将time_t里的时间信息转换成现在使用的时间日期表示法,返回强悍的struct tm结构体

    eg1:time取得当前时间,gmtime转换成格林尼治时间,字符串形式输出(直接asctime函数转)。
             自己转换,成“xxxx年 x月 xx日 Tue 15:52:00"形式显示系统时间
     

    #include<time.h>
    int main(){
    	time_t timep;//时间结构体变量
    	char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"}; 
    	struct tm *p;
    	time(&timep);//获取当前时间
    	printf("%s",asctime(gmtime(&timep)));
    	p=localtime(&timep);//获取当地时间 并按现在的时间日期来表示
    	printf("%d年 %d月 %d日\n",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);
    	printf("%s %d:%d:%d\n",wday[p->tm_wday],p->tm_hour,p->tm_min,p->tm_sec);
    	return 0;
    }

    eg2:c语言写钟表

    #include<stdio.h>
    #include<time.h>
    #include <unistd.h>
    main(){
    	time_t timep;//时间结构体变量
    	struct tm *p;
    	while(1){
    		time(&timep);//获取当前时间
    		p=localtime(&timep);//获取当地时间 并按现在的时间日期来表示
    		printf("%d年%d月%d日 %d:%d:%02d\n",1900+p->tm_year,p->tm_mon+1,p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec);
    		sleep(1);
    	}
     	printf("\n时间到!\n\a"); // \a是让系统发出声音的一种表达方式
     }

     

    时间间隔

    struct timeval{
           long tv_sec; //秒
           long tv_usec;//微秒
    };

    struct timezone{
           int tz_minuteswest; //和格林尼治时间差了多少分钟
           int tz_dsttime; //日光节约时间的状态
    };

    gettimeofday函数说明
    头文件:#include<sys/time.h>     #include<unistd.h>
    int gettimeofday(struct timeval * tv,struct timezone * tz)
    把当前时间分s与us放到tv中返回  当地时区信息放到tz中返回

    做某事的时间模板
    gettimeofday(&tv1,&tz);
    /*do something*/
    gettimeofday(&tv2,&tz);
    t=tv2.tv_sec-tv1.tv_sec+(tv2.tv_usec-tv1.tv_usec)*pow(10,-6);//s+us*10^-6

    eg1.

    #include <stdio.h>
    #include <unistd.h>
    #include <sys/time.h>
    int main(){
    	struct timeval tv1,tv2;
    	struct timezone tz;
    	gettimeofday(&tv1,&tz);
    	printf("1970距离今天tv_sec= %d 秒\n",tv1.tv_sec);
    	printf("零头有tv_usec= %d 微秒\n",tv1.tv_usec);
    	gettimeofday(&tv2,&tz);
    	printf("第7行到第10行程序耗时tv2_usec-tv1_usec= %d 微秒\n",tv2.tv_usec-tv1.tv_usec);//程序一定在ms内完成
    	//printf("%d\n",tv2.tv_sec-tv1.tv_sec);//绝对在ms级别 所以输出0
    	return 0;
    }

     

    exp2:大例

    #include<stdio.h>
    #include<stdlib.h>
    #include<sys/time.h>
    #include<unistd.h>
    int main()
    {
    	long int begin,sec,stop;
    	struct timeval tv1, tv2;
    	struct timezone tz;
    	char tmp;
    	begin=0;
    	stop=0;
    	sec=0;
    	system("clear");
    	printf("计时器程序(单位s)\n");
    	printf("输入b(begin)计时器开始计时\n");
    	printf("输入w(watch)查看已经累计时间\n");
    	printf("输入r(rest)重新开始计时\n");
    	printf("输入s(stop)暂停计时器\n");
    	printf("输入e(end)结束计时器\n");
    	while(1)
    	{
    		scanf("%c",&tmp);
    		if(tmp=='b')
    		{
    			if(begin==1&&stop==0)
    				printf("计时器已经启动!\n");
    			if(begin==0&&stop==0)
    			{
    				printf("计时器启动\n");
    				gettimeofday(&tv1,&tz);
    				sec=0;
    				begin=1;
    			}
    			if(stop==1)
    			{
    				gettimeofday(&tv1,&tz);
    				stop=0;
    				printf("暂停结束!\n");
    			}
    		}
    		if(tmp=='w'){
    			if(stop==0){
    				gettimeofday(&tv2,&tz);
    				printf("已经计时%ld 秒\n",sec+tv2.tv_sec-tv1.tv_sec);
    			}
    			if(stop==1)
    				printf("已经计时%ld 秒\n",sec);
    		}
    		if(tmp=='s'){
    			if(stop==1){
    				printf("计时已经暂停!\n");
    			}
    			if(stop==0){
    				gettimeofday(&tv2,&tz);
    				sec=sec+tv2.tv_sec-tv1.tv_sec;
    				printf("计时暂停,已经计时%ld 秒\n",sec);
    				stop=1;
    			}
    		}
    		if(tmp=='r'){
    			gettimeofday(&tv2,&tz); 
    			printf("已经计时%ld 秒\n",sec+tv2.tv_sec-tv1.tv_sec);
    			printf("计时器在5 秒后被重置!\n");
    			sleep(5);
    			begin=0;
    			sec=0;
    			stop=0;
    			system("clear");
    			printf("计时器程序(单位s)\n");
    			printf("输入b(begin)计时器开始计时\n");
    			printf("输入w(watch)查看已经累计时间\n");
    			printf("输入r(rest)重新开始计时\n");
    			printf("输入s(stop)暂停计时器\n");
    			printf("输入e(end)结束计时器\n");
    		}
    		if(tmp=='e') break;
    	}
    	return 0;
    }
    

     

     

    4.4环境控制函数

    常用环境控制函数
    函数名 功能
    getenv 取得环境变量的内容
    putenv/setenv 改变/增加环境变量
    unsetenv 取消已经改变的环境变量

    getenv函数:
    头文件:#include<stdlib.h>
    char* getenv(const char *name);  //失败返回null
    根据环境变量名name,取得该系统环境变量的值      环境变量格式key=value    

    eg1.获取当前登录用户

    当前登录用户环境变量key为USER  (只能大写,不能小写)

    #include<stdio.h>
    #include<stdlib.h>
    int main(){
    	char *p;
    	if((p=getenv("USER")))
    		printf("USER=%s\n", p);
    	return 0;
    }

     

    setenv函数:
    头文件:#include<stdlib.h>
    int setenv(const char *key,const char *value,int overwrite);
    改变或者增加环境变量     overwrite:1:改为value新值       0:该环境变量已有内容时,参数value被忽略(也即本次不改值)    

     

    eg2:修改USER的值

    #include<stdio.h>
    #include<stdlib.h>
    int main(){
    	char *p;
    	if(p=(getenv("USER"))){
    		printf("USER =%s\n",p);
    	}
    	setenv("USER","test",1);
    	printf("USER=%s\n",getenv("USER"));
    	unsetenv("USER");
    	printf("USER=%s\n",getenv("USER"));
    	setenv("USER","test",0);//USER无value时也会改
    	printf("USER=%s\n",getenv("USER"));
    	setenv("USER","test2",0);//USER有value时不会改 忽略test2 下面仍然输出test
    	printf("USER=%s\n",getenv("USER"));
    	return 1;	
    }

     

     

    exp3:输出系统所有的环境变量

    linuxC有一个全局变量 environ 在unistd.h里

    #include<stdio.h>
    int main(){
    	extern char **environ;//environ不能取别的名字 是系统全局变量
    	int i;
    	for(i=0;environ[i]!=NULL;i++){
    		printf("%s\n",environ[i]);
    	}
    	return 0;
    }

    或者不用extern声明 直接#include<unistd.h>

    #include<stdio.h>
    #include<unistd.h>
    int main(){
    	int i;
    	for(i=0;environ[i]!=NULL;i++){
    		printf("%s\n",environ[i]);
    	}
    	return 0;
    }

     

    4.5内存分配函数

    常用内存分配函数
    函数名 功能
    calloc/malloc 配置内存空间
    getpagesize 取得操作系统中内存分页大小
    mmap 建立内存映射
    munmap 解除内存映射
    free 释放原先配置的内存

    calloc函数
    头文件#include<stdlib.h>
    void *calloc(size_t nmemb,size_t size); //成功返回指针,失败返回NULL
    用来分配nmemb*size的内存块。
    nmemb为内存块的大小
    size为内存块的数量
    calloc()配置内存时会将内存内容初始化为0

    getpagesize函数
    头文件:#include<unistd.h>
    size_t getpagesize(void);
    取得内存分页大小
    取得的为系统分页大小,不一定和硬件分页大小相同

    malloc函数
    头文件:#include<stdlib.h>
    void *malloc(size_t size);//成功返回指针 失败返回NULL
    配置内存空间,大小由指定的size决定

    exp1.录入结构体

    #include<stdio.h>
    #include<stdlib.h>
    #include<unistd.h>
    #include<ctype.h>
    struct co
    {
    	int index;
    	char name[8];
    	char MTel[12];
    	char Tel[12];
    };
    int x;
    int main(){
    	freopen("input.txt","r",stdin);
    	struct co *p;
    	char ch;
    	printf("do you want to add a user?Y/N\n");
    	ch=getchar();
    	if(ch=='y'||ch=='Y'){
    		p=(struct co *)malloc(sizeof(struct co));
    		p->index=++x;
    		printf("User name:");
    		scanf("%s", p->name);
    		printf("MoveTel:");
    		scanf("%s",p->MTel);
    		printf("Tel:");
    		scanf("%s",p->Tel);
    		printf("intex:%d\nname:%s\nMoveTel:%s\nHomeTel:%s\n",p->index,p->name,p->MTel,p->Tel);
    	}
    	printf("page size=%d\n", getpagesize());/*取得内存分页大小*/
    	return 0;
    }

    input.txt:

    Y
    tomcat
    17812345678
    110

     

    mmap函数
    头文件:#include<unistd.h>   #inlucde<sys/mman.h>
    void *mmap(void *start,size_t length,int prot, int flags,int fd,off_t offsize);
    参数start指向对应的内存起始地址,通常设置为NULL

    参数length代表将文件中多大的部分对应到内存

    参数prot:映射区域的保护方式。可以为以下几种方式的组合:
    PROT_EXEC 映射区域可被执行
    PROT_READ 映射区域可被读取
    PROT_WRITE 映射区域可被写入
    PROT_NONE 映射区域不能存取

    参数flags:影响映射区域的各种特性。在调用mmap()时必须要指定MAP_SHARED 或MAP_PRIVATE。
    MAP_FIXED 如果参数start所指的地址无法成功建立映射时,则放弃映射,不对地址做修正。通常不鼓励用此旗标。
    MAP_SHARED对映射区域的写入数据会复制回文件内,而且允许其他映射该文件的进程共享。
    MAP_PRIVATE 对映射区域的写入操作会产生一个映射文件的复制,即私人的“写入时复制”(copy on write)对此区域作的任何修改都不会写回原来的文件内容。
    MAP_ANONYMOUS建立匿名映射。此时会忽略参数fd,不涉及文件,而且映射区域无法和其他进程共享。
    MAP_DENYWRITE只允许对映射区域的写入操作,其他对文件直接写入的操作将会被拒绝。
    MAP_LOCKED 将映射区域锁定住,这表示该区域不会被置换(swap)。

    参数fd:要映射到内存中的文件描述符。如果使用匿名内存映射时,即flags中设置了MAP_ANONYMOUS,fd设为-1。有些系统不支持匿名内存映射,则可以使用fopen打开/dev/zero文件,然后对该文件进行映射,可以同样达到匿名内存映射的效果。

    参数offset:文件映射的偏移量,通常设置为0,代表从文件最前方开始对应,offset必须是分页大小的整数倍。

    返回值:
    若映射成功则返回映射区的内存起始地址,否则返回MAP_FAILED(-1),错误原因存于errno 中。

     

    exp2:mmap读取文件内容

    #include<stdio.h>
    #include<sys/types.h>
    #include<sys/stat.h>
    #include<fcntl.h>
    #include<unistd.h>
    #include<sys/mman.h>
    int main(){
    	int fd;
    	void *start;
    	struct stat sb;
    	fd=open("/etc/passwd",O_RDONLY);//许多函数具体见第5章IO
    	fstat(fd,&sb);/*取得文件大小*/
    	start=mmap(NULL,sb.st_size,PROT_READ,MAP_PRIVATE,fd,0);/*文件映射到内存,始址为0,偏移量为0(从文件头开始)*/
    	if(start==MAP_FAILED) return 0;/*映射失败 直接返回*/
    	printf(" %s ", start);
    	munmap(start,sb.st_size);/*解除映射*/
    	close(fd);
    	return 0;
    }

     

    exp3:获取文件属性

    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <unistd.h>
    int main()
    {
        const char fname[] = "main.c";
        struct stat stat_info;
        if(0 != stat(fname, &stat_info))
        {  
            perror("取得文件信息失败了!");
            exit(1);
        }
        printf("文件所在设备编号:%ld\r\n", stat_info.st_dev);
        printf("文件所在文件系统索引:%ld\r\n", stat_info.st_ino);
        printf("文件的类型和存取的权限:%d\r\n", stat_info.st_mode);
        printf("连到该文件的硬连接数目:%d\r\n", stat_info.st_nlink);
        printf("文件所有者的用户识别码:%d\r\n", stat_info.st_uid);
        printf("文件所有者的组识别码:%d\r\n", stat_info.st_gid);
        printf("装置设备文件:%ld\r\n", stat_info.st_rdev);
        printf("文件大小:%ld\r\n", stat_info.st_size);
        printf("文件系统的I/O缓冲区大小:%ld\r\n", stat_info.st_blksize);
        printf("占用文件区块的个数(每一区块大小为512个字节):%ld\r\n", stat_info.st_blocks);
        printf("文件最近一次被存取或被执行的时间:%ld\r\n", stat_info.st_atime);
        printf("文件最后一次被修改的时间:%ld\r\n", stat_info.st_mtime);
        printf("最近一次被更改的时间:%ld\r\n", stat_info.st_ctime);
        return 0;
    }

    mian.c在当前目录下

     

    4.6数据结构中常用函数

    函数名 功能
    bsearch 二分法搜索
    lfind/lsearch 线性搜索,lsearch()找不到关键数据时会主动把改项数据加入数组里
    qsort 利用快速排序法排序数组

    qsort()函数:
    头文件:#include<stdlib.h>
    void qsort(void* base,size_t n,size_t size,
                int(*compar)(const void*,const void*));
    eg:qsort(base,n,sizeof(int),compar); //对数组base[n]排序
    利用快速排序法排列数组
    base指向要被搜索的数组的开头地址
    n代表数组中元素数量
    size为每一元素大小
    compar为函数指针,数据相同时则返回0;不同时返回非0值。返回1时两个数据交换,返回-1时两个数据不交换.不可缺省

     

    exp1:输入n,再输入n个整数,qsort()对n个整数进行排序

    #include<stdio.h>
    #include<stdlib.h>
    #define m 70
    int compar (const void *a,const void *b){
    	int *pa=(int *)a,*pb=(int*)b;
    	if(*pa>*pb) return 1;
    	if(*pa == *pb) return 0;
    	if(*pa < *pb) return -1;
    }
    int main(){
    	freopen("input.txt","r",stdin);
    	int base[m],n;
    	int i;
    	printf("input n(n<50):");
    	scanf("%d",&n);
    	for (int i = 0; i < n; ++i)	{
    		scanf("%d",&base[i]);
    	}
    	printf("\n排序前:\n");
    	for (int i = 0; i < n; ++i)	{
    		printf("%d ",base[i]);
    		if(i!=0&&i%10==0) printf("\n");
    	}
    	qsort(base,n,sizeof(int),compar);//必须有compar 没有会报错 无默认比较函数
    	printf("\n排序后:\n");
    	for (int i = 0; i < n; ++i)	{
    		printf("%d ",base[i]);
    		if(i!=0&&i%10==0) printf("\n");
    	}
    	printf("\n");
    	return 0;
    }

    input.txt

    10
    6 7 -9 89 72 -89 0 10 7890 -909887

     

    字符串查找

    lfind函数:
    头文件:#include<stdlib.h>
    void *lfind(const void *key,const void *base,size_t *n,size_t size,int(* compar)(const void*,const void*));
    函数功能:线性搜索,在数组中从头至尾,一项项查找数据
    eg:lsearch(key,base,&n,size,compar);//char[] key;char[] base;int n;int size;
    key:指向欲查找的关键数据的指针
    base:指向要被搜索的数组开头的地址
    n:数组中元素的数量
    size:每一个元素的大小
    compar:函数指针,相同返回0,不同返回非0
    lfind和lsearch的不同点在于,当找不到关键数据时lfind()仅仅会返回NULL,而不会主动把该数据加入数组尾端。如果lsearch()找不到关键数据,会主动把该数据加入数组里。

    bsearch函数说明:
    void *bsearch(const void* key,const void *base,size_t n,size_t size,int(*compar)(const void*,const void*));
    利用二分搜索法从排序好的数组中查找数据
    key:指向欲查找的关键数据的指针
    base:指向要被搜索的数组开头地址
    n:数组中元素数量
    size:每一元素的大小
    compar:函数指针,数据相同时返回0,不同时返回

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 1.分别调试课件中的给定n求Fibonacci(n)递归与非递归函数,并编写测试函数对两种或多种不同方法所需时间进行比较,且当某一轮计算所需时间超过给定最大时间量时(如超过10秒),停止计算。计算过程中要求输出类似...
  • 大家好!小弟正在专研C语言,现有一问题,球各位指点。 我想在程序运行时,在判断某个条件不符合后,输出的提示语延长几秒钟的时间, 然后结束程序。请问这功能怎样实现啊?求高手指点!
  • C语言-系统错误信息

    2021-02-22 11:25:00
    C语言-系统错误信息 strerror函数 errno的细节 1.调用库函数失败不一定会设置errno 2.errno不能作为调用库函数失败的标志 3.程序员可以不用errno C语言-系统错误信息 时间到底是什么? 也许时间是一条...

    目录

    C语言-系统错误信息

    strerror函数

    errno的细节

    1.调用库函数失败不一定会设置errno

    2.errno不能作为调用库函数失败的标志

    3.程序员可以不用errno


    C语言-系统错误信息

    时间到底是什么?

    也许时间是一条奔流不息大河,我们都是大河里的一朵浪花;

    也许时间是一面毫无波澜万顷湖,我们都是万顷湖中一滴滴即将被蒸干的湖水。

    田小龙今年25岁了,不知道为什么,还挺羡慕95年生,身份证却是97年的兄弟--田小虎。

    当和同事聊起年龄的时候,也许我羡慕他;

    当和村里人聊起婚姻的时候,也许我羡慕他;

    当然我羡慕他的同时,他可能曾经也羡慕过我。

    我可以用自己身份证进入网吧上网的时候,他被拒绝,想尽办法终于可以和我一起坐在网吧的时候,也许他羡慕我;

    当他辍学去打工的时候,16/17岁的身份证年龄,只能去那些,几乎没有外界关注年龄却很累行业,也许他羡慕我;

    当他去酒店开房却因为年龄不够而被拒之门外的时候,他可能羡慕我。

    我的年龄也许在某个阶段就是我的财富,我的幸福。

    成长对于每个人来说也许都是一件幸福的事情。

    我不想没有经历过人山人海,没有跨过山河大海,二十几岁的年纪,却把平凡当成了唯一的答案。(奇葩说7辩手:席瑞)

    也许我应该去经历没有经历过的事情,去感受没有感受过的感受,去体验不同的生活。可以精致,可以伟大,也可以平凡。

    不知道为什么,对于年龄也没什么太大的感觉,十五岁,二十岁,二十五岁、三十岁、五十岁对我来说仿佛没有什么太大的区别,我一直觉得人生是平行向前推进的。

    也许是因为我依然年轻,依然可以感到幸福,没有太多的欲望,想象中依然有一个美好的未来。

    也许回忆过往的时候,会有些许遗憾,感觉回到当初的时间,当初的模样,我应该可以做的更好,可是会不会又留下一些新的遗憾,我不知道,也许人间没有任何一件事情可以做到完美,只能趋近完美,可是幸运的是从来没有羡慕过比自己年轻的躯体,比自己老成的经验,少年老成的人装年轻,少年装老成,搞笑的世界出现了许多自以为是搞笑的人。

    有趣有趣,快哉快哉!

    以前我乐意做一个挑逗着,却深情的第三世界的导演,现在我只想当一个默默无语的旁观者,一个记录生活的诗人

    人生最大的幸福,也许是透过别人的命运,完成自我的蜕变。

                                                                                                                                                                                                                       -- 第三世界的诗人 2021.2.20

    C语言中,还有一个全局变量errno,存放了函数调用过程中产生的错误码。errno不同数值所代表的的错误消息定义在<errno.h>文件中。

    配合strerror和perror两个库函数,可以方便的查看出错信息。

    strerror在<string.h>中声明,用于获取错误码对应的消息描述。

    perror在<stdio.h>中声明,在屏幕上显示最近一次系统错误码及消息描述。实际开发中,我们写的程序运行于后台,在屏幕上显示错误信息么多大意义。

    strerror函数

    函数声明:

    char *strerror(int errno);

    函数说明:strerror()根据参数errno的错误码来查询其错误原因的描述字符串,然后将该字符串指针返回。

    返回值:返回描述错误原因的字符串地址。

    errno的细节

    1.调用库函数失败不一定会设置errno

    并不是全部的库函数调用失败都会设置errno的值,不属于系统调用的函数不会设置errno。

    2.errno不能作为调用库函数失败的标志

    C语言中,如果库函数被正确的执行,那么errno的值不会被清空。errno的值只有库函数发生错误时才会被设置为0.

    3.程序员可以不用errno

    关注errno的目的是为了获得更详尽的信息,但对于程序员来说不是必须的。

     

    谢谢观赏,欢迎评论。

    展开全文
  • c语言实现文件夹以系统时间命名,非常方便数据的存储和再次调用~!
  • |||#include "stdafx.h"#include #include void main( void ){ struct tm when; time_t now asctime( &when ) ); else perror( "mktime failed" );} days &days ); wh
  • C语言中获取系统时间的方法

    千次阅读 2013-01-11 11:48:23
    C语言中获取系统时间的方法 头文件:time.h 函数原型:time_t time(time_t * timer) 功能: 获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal...
  • c语言==系统调用与库函数的区别(28)

    千次阅读 2016-12-26 22:05:42
    (2)库函数在用户地址空间执行,系统调用是在内核地址空间执行,库函数运行时间属于用户时间,系统调用属于系统时间,库函数开销较小,系统调用开销较大 (3)库函数是有缓冲的,系统调用是无缓冲的 系统调用依赖于...
  • c语言中获取系统时间的方法

    千次阅读 2018-06-21 15:28:11
    这是在设计图书管理系统当中调用的获取系统时间,简单方便#include&lt;bits/stdc++.h&gt; using namespace std; int main() { int a,b,c,d,e,f; int argc;char ** argv; time_t temp; struct tm *t; ...
  • 编写一个C语言程序,使用系统调用fork()创建子进程,利用getpid()和getppid()分别获得进程的PID和父进程PID,使用sleep()将先关进程挂起指定时间
  •  前段时间给学校做一个在线练习C语言程序和C语言考试的系统,服务器架构是LAMP的。因为其他的都没什么好多的,要实现在线编译只要exec()函数直接调用gcc进行编译就行了,$compile_str = "gcc ".$filename." -...
  • C语言编程常见问题解答之系统调用

    千次阅读 2010-06-05 16:50:00
    系统调用所代表的那些函数实际上是计算机的所有底层操作——屏幕和磁盘的控制,键盘和鼠标的控制,文件系统的管理,时间,打印,这些只不过是系统调用所实现的一部分功能。  总的来说,系统调用往往涉及到BIOS...
  • 系统调用:(时间长。应当尽量减少系统调用的次数),进入内核之后调用。 函数调用:直接跳到函数的地址进行执行。 UNIX哲学之一 - 一切皆文件(Everything is a file) 文件描述符 对于Linux而言,所有对设备和文件的...
  • C语言获取当前时间

    千次阅读 2018-03-23 18:17:01
    在介绍利用系统调用获取当前时间之前,先辨析几个基本的概念。API ,系统调用 ,封装例程API只是一个函数定义。系统调用通过软中断向内核发出一个明确的请求。Libc库定义了一些API引用的封装例程,唯一的目的就是...
  • 设计内容:利用C/C++语言、DOS中断中21H与屏幕显示相关的中断调用完成设计,具体包括: 1、 命令解释器 2、 列目录命令 3、 显示时间命令 4、 显示日期命令 5、 回显字符串命令 6、 创建目录命令 7、 删除目录命令...
  • 线程是系统分配时间片的最小单位。一个进程至少拥有一个线程。 *程序与进程的区别 进程是动态的(代码,数据,PCB控制卡组成,有一定的生命周期),程序是静态的(指令的集合)。一个程序可以对应多个进程,但一...
  • c语言如何获取时间

    2015-11-23 13:44:08
    在做测试或性能优化时,经常要知道程序运行的时间,在Linux系统可以使用time命令来计算程序运行运行所消耗的时间,能精确到毫秒,如果要精确到代码块或某个操作运行时所消耗的时间,time命令就不给力了。如果对时间...
  • c语言中有专门处理系统时间,程序计时等等功能的库, 即time.h 在time.h中函数clock_t clock( void )可以完成计时功能。 这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时...
  • 本文实例为大家分享了C语言实现航班管理系统的具体代码,供大家参考,具体内容如下 /*.航班管理系统 主界面以菜单的形式展现,用户可以按不同的键执行不同的操作,即调用不同的函数; ...... 用不同的函数实现,...
  • C语言获取当前的日期及时间

    万次阅读 多人点赞 2018-03-18 10:36:06
    C语言中读取系统时间的函数为time(),其函数原型为: #include <time.h> time_t time( time_t * ) ; time_t就是long,函数返回从1970年1月1日(MFC是1899年12月31日)0时0分0秒,到现在的的秒数。 可以...
  • C语言 机票管理系统

    2011-06-30 22:42:47
    通过建立一个函数,确定航班号、确定的航线(起始站、终点站)、确定的飞行时间(星期几)和一定的成员订额,完成飞机订票系统。主函数可以调用子函数,分别完成输入信息,保存信息,读取信息,输出信息,排序,查找...
  • C语言获取程序运行时间

    万次阅读 多人点赞 2018-05-29 18:28:51
    用于获取程序启动时间到这次调用clock函数的CPU占用时间其在time文件里还有一个宏叫#define CLOCKS_PER_SEC ((clock_t)1000)用于衡量秒的单位,1000也就是千分之一秒,也就是当过了一毫秒clock会自动增加1在其他操作...
  • C语言获取时间

    2015-09-09 18:22:50
    在做测试或性能优化时,经常要知道程序运行的时间,在Linux系统可以使用time命令来计算程序运行运行所消耗的时间,能精确到毫秒,如果要精确到代码块或某个操作运行时所消耗的时间,time命令就不给力了。如果对时间...
  • 正常情况下,系统会定时给看门狗发送一个信号,也就是“喂狗”,如果遇到异常的状况(即:看门狗在规定的时间里没有收到信号),看门狗会判定系统出了故障,就会发送一个reset信号给系统复位。 1.2 为什么要关看门...
  • C语言中可以使用函数gettimeofday()函数来得到时间。它的精度可以达到微秒, 且在x86-64平台gettimeofday()已不是系统调用,不会陷入内核, 多次调用不会有性能损失. 函数原型: #include&lt;sys/time.h&gt; ...
  • C语言时间函数

    2015-10-31 11:26:21
    调用系统时间处理时间问题时,需要使用时间函数,使用前需要引入头文件time.h。 1.time函数 time_t time(time_t *t); time函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。参数t是一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 558
精华内容 223
关键字:

c语言调用系统时间

c语言 订阅