博客主页:https://blog.csdn.net/weixin_46094737?type=blog
欢迎评论⭐留言 如有错误敬请指正!
本文由小学生廉原创,首发于 CSDN🙉🙉🙉
未来很长,值得我们全力奔赴更美好的生活!💞💞💞
①、重定向
一、重定向定义:
文件重定向简单的说就是由键盘输入变为由文件输入,由输出到屏幕变为输出到文件。
1、输出重定向格式:
freopen("文件名","打开方式",stdout);
freopen("stdout.txt","a",stdout);
含义:简单理解,就是将我们的标准输出printf()函数在终端中的打印结果,打印到我们指定的文件中去。
2、输入重定向格式:
freopen("文件名","打开方式",stdin);
freopen("stdin.txt","r",stdin);
含义:简单理解,就是将我们的标准输入scanf()函数在终端中的输入,转变成我们从指定的文件中直接获取需要的字符。
二、重定向的注意事项
1、在一条命令中,输入文件名和输出文件名不能相同;
2、重定向运算符连接一个可执行文件和一个数据文件,不能用于连接一个数据文件和另一个数据文件,也不能用于连接一个可执行程序和另一个可执行程序;
3、使用重定向运算符不能读取多个文件的输入,也不能把输出定向至多个文件;
源代码:
#include <stdio.h>
int main()
{
int stdout_value = dup(fileno(stdout));//定义添加一个标记
printf("开始进行重定向:%d\n",stdout_value);
int a,b;
freopen("stdout.txt","a",stdout);
freopen("stdin.txt","r",stdin);
scanf("%d",&a);
printf("%d",a);
scanf("%d",&b);
printf("%d",b);
dup2(stdout_value, fileno(stdout));//恢复控制台输出
close(stdout_value);
printf("好好学习,天天向上!\n");//恢复控制台输出
printf("当你看到这行话,就说明重定向已经结束啦!");
return 0;
}
运行结果:
②、时间time()函数
时间的基本概念以及定义大家都很熟悉,这里便不再赘述。
注意在使用时,添加相关头文件:
#include <stdio.h>
#include <time.h>
#include <utime.h>
#include <sys/times.h>
time_t t1;//定义一个时间类型变量
time(&t1);//t1保存时间戳
打印时间戳:
printf("时间戳为:%lld",t1);
例如一下示例:
#include <stdio.h>
#include <time.h>
#include <utime.h>
int main()
{
time_t t1;
printf("当前时间戳为:%lld",t1);
return 0;
}
运行结果:
需要注意一点:
在c语言中时间戳是指从1970年1月1日0时0分0秒到此刻的时间(秒数)。
解析时间:
我们现在有一个格式化后的宇符串,需要将里面的时间信息获取出来,比如2012年12月12日,我们要将年月日分别取出来,这种需求就叫做解析时间。
先格式化出一个需要被解析的时间字符串:
//1. 定义时间戳普通变量
time_t t_abc;
//2. 通过time()函数,获取时间戳
time(&t_abc);
//3. 定义日历指针变量
struct tm * tdata;
//4. 通过localtime()函数,将时间戳转换为日历信息
tdata=localtime(&t_abc);
//5. 通过asctime()函数,将日历信息格式日期的形式输出
puts(asctime(tdata));
//6. 通过ctime()函数,直接将时间戳以格式日期的形式输出
puts(ctime(&t_abc));
//按照格式定义,自主选择格式化输出日期
char str_time[30];
size_t ret=strftime(str_time,30,"%m",tdata);
printf("rer=%d, str_time长度=%d\n",ret,strlen(str_time));
printf("strftime()转换后:%s\n",str_time);
计算时间差:
void change_time()//计算时间差
{
time_t t1 = time(NULL);
Sleep(1000);//注意事项:1、Sleep首字母大写 2、()里面的参数为毫秒 3、头文件为#include <windows.h>
time_t t2 = time(NULL);
unsigned int ret= t2 - t1;
printf("%d",ret);
}