博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实验4 时间与文件
阅读量:6433 次
发布时间:2019-06-23

本文共 2603 字,大约阅读时间需要 8 分钟。

spacer.gif实验时间与文件

时间表示:

typedef long  time_t; // 实际上是一个32 位长整数

struct timeval{

time_t tv_sec;  //

suseconds_t  tv_usec; //微妙

}

获得时间:

#include <time.h>

time_t time(time_t  *t);返回时间为epoch 以来的秒数

返回值同时保存在参数所指向的变量中

例如

printf(“%u”,time(NULL));

毫秒数:

typdef long  clock_t

函数原型为clock_t clock(clock_t  *)

返回从epoch 以来的毫秒数

程序1

#include “stdio.h”

#include “stdlib.h”

#include “time.h”

int main(  void )

{

longi = 10000000L;

clock_t start, finish;

double duration;

/* 测量一个事件持续的时间*/

printf( "Time  to do %ld empty loops is ", i );

start = clock();

while( i--  ) ;

finish = clock();

duration =  (double)(finish - start) /CLOCKS_PER_SEC;

printf( "%f  seconds\n", duration );

system("pause");

}

休眠时间

Sleep 函数,括号内休眠的秒数

#include <unistd.h>

unsigned int  sleep(unsigned int seconds)


spacer.gifusleep(unsigned )

括号内为指定的微妙数

nanosleepconst sturct  timespec*, struct timespec *rem

其中第一个参数指定休眠时间,后面一个参数指定的实际休眠时间

例如程序

Struct timespec  req={.tv_sec=0, .tv_nsec=1000}

Struct time  spec rem;

nanosleep(&req,&rem);

间隔定时器

一旦到时间,就会发出信号,由信号处理程序来进行处理。

程序2

#include <stdio.h>

#include <unistd.h>

#include <signal.h>

#include <string.h>

#include <sys/time.h>

#include <errno.h>

void PrintMsg(int  Num)

{

printf("%s\n", "Hello World");

return;

}

int main(int  argc, char* argv[])

{

signal(SIGALRM, PrintMsg);

struct itimerval  tick;

tick.it_value.tv_sec  = 1; //十秒钟后将启动定时器

tick.it_value.tv_usec  = 0;

tick.it_interval.tv_sec  =1; //定时器启动后,每隔秒将执行相应的函数

tick.it_interval.tv_usec  = 0;

//setitimer  将触发SIGALRM 信号

int ret =  setitimer(ITIMER_REAL, &tick, NULL);

if ( ret !=  0)

{

printf("Set timer error. %s \n",  strerror(errno) );

return -1;

}

printf("Wait!\n");

getchar();

return 0;

}


spacer.gif程序求目前的时间,然后按照20XX XX XX 号星期XXX XX 秒来显示。XX

(要求利用localtime  函数来求)

提示先用time(NULL),求当前的秒数,用localtime  函数将当前秒数转换为struct tm 结构体

文件

如何把一个文件读入,显示到屏幕上?

#include <stdio.h>

int main()

{

int i;

int len;

char buf[1024];

FILE *fp=fopen("abc.txt","r");

len=fread(buf,sizeof(char),1024,fp);

for(i=0;i<len&&i<1024;i++)

printf("%c",buf[i]);

printf("\r\n");

fclose(fp);

}

10 Ctrl+C 就可以恢复缺省的处理方式:即默认退出(SIG_DEF)

上面的程序对与1024 个字节以内的文件是可以的,但是无法处理超过1024 字节的文件

可以利用一个while 循环将其逐次读入

#include <stdio.h>

int main()

{

int i;

int len;

char buf[1024];

FILE *fp=fopen("cyg.reg","r");

do

{

len=fread(buf,sizeof(char),1024,fp);

for(i=0;i<len&&i<1024;i++)printf("%c",buf[i]);

}while(len==1024);

printf("\r\n");

fclose(fp);

}

向某个指定文件写入26 个英文字母


spacer.gif#include <stdio.h>

int main()

{

int i;

int len;

char buf[26*3];

for(i=0;i<26;i++)

{

buf[i+26]='a'+i;

buf[i]= 'a'+i;

buf[i+52]='a'+i;

}

FILE *fp=fopen("write.txt","w+");

fwrite(buf,sizeof(char),26*3,fp);

fclose(fp);

}

本文转自陈仲阳0 51CTO博客,原文链接:http://blog.51cto.com/wolfword/1240340

转载地址:http://rnaga.baihongyu.com/

你可能感兴趣的文章
CVE-2014-4113漏洞利用过程分析
查看>>
解密MSSQL链接数据库的密码
查看>>
Glide-源码详解
查看>>
你敢在post和get上刁难我,就别怪我装逼了
查看>>
直播 3.0 时代,在线教育行业的裂变和重构
查看>>
SpringBoot使用Nacos服务发现
查看>>
2017双11技术揭秘—阿里巴巴数据库技术架构演进
查看>>
我的友情链接
查看>>
Spring框架 - AOP使用
查看>>
Ansible常用内置属性
查看>>
C#使用正则表达式校验邮箱
查看>>
Linux自动清理N天前目录文件
查看>>
方便 快捷 安全的EVO邮件服务器
查看>>
bash的快捷键
查看>>
关于如何编写linux设备驱动
查看>>
DNS服务
查看>>
九州云开放“边缘云”能力 助力中国联通延展业务边界
查看>>
Linux进程状态(ps stat)之R、S、D、T、Z、X
查看>>
ME3750和普通3750的区别
查看>>
H3C交换系列之Super VLAN
查看>>