系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 一、格式化输入
  • 二 重定向
  • 三 文件随机定位
  • 其他文件操作

一、格式化输入



二 重定向



#include <stdio.h>
#include "./include/io_utils.h"
#include "./include/time_utils.h"
#include <locale.h>#if defined(__APPLE__) || defined(__linux__)//如果是苹果或linux系统
#  include <unistd.h>
#elif defined(_WIN32)
#  include <io.h>
#endifvoid RedirectStdout(char const *filename) {static int saved_stdout_no = -1;//保存控制台的标准输出流if (filename) {//重定向标准输出流if(saved_stdout_no == -1) {//保存标准输出流saved_stdout_no = dup(fileno(stdout));}fflush(stdout);//把该输出到控制台的输出,后面一条语句将输出到文件freopen(filename, "a", stdout);} else {//恢复标准输出流if (saved_stdout_no != -1) {fflush(stdout);//将指向文件的输出flush掉,dup2(saved_stdout_no, fileno(stdout));// 让指向文件的输出流,从新指向控制台close(saved_stdout_no);saved_stdout_no = -1;}}
}int main() {// 不成熟版本:以追加方式将控制台(stdout)内容放入outpu.log文件
//  freopen("output.log", "a", stdout);
//  puts("This will be written to file 'output.log'");
//  fclose(stdout);puts("1");//向控制台输出1RedirectStdout("output.log");//将stdout重定向到output.log文件puts("2");//向文件输出2RedirectStdout(NULL);//恢复输出到控制台puts("3");RedirectStdout("output.log");puts("4");RedirectStdout(NULL);puts("end");// python x.py > output.log 2>&1 将x.py重定向到output.log// 将2(错误)定向到(&1)控制台// python x.py > output.log 2>&1return 0;
}

三 文件随机定位

#include <stdio.h>
#include "./include/io_utils.h"
#include <locale.h>int main() {FILE *file = fopen("CMakeLists.txt", "rb");  long position = ftell(file);PRINT_LONG(position);char buffer[128];fread(buffer, 1, 128, file);PRINT_LONG(ftell(file));fseek(file, 10, SEEK_SET);//从开始后移10PRINT_LONG(ftell(file));fseek(file, 10, SEEK_CUR);//从当前后移10PRINT_LONG(ftell(file));fseek(file, -10, SEEK_END);//从结尾前移10PRINT_LONG(ftell(file));fseek(file, 0, SEEK_END);PRINT_LONG(ftell(file));fclose(file);//不是所有文件流都支持随机定位 PRINT_LONG(ftell(stdout));perror("ftell(stdout)");return 0;
}

其他文件操作

#include <stdio.h>
#include "./include/io_utils.h"
#include <locale.h>
#include <sys/stat.h>typedef struct __crt_stdio_stream_data
{union{FILE  _public_file;char* _ptr;};char*            _base;int              _cnt;long             _flags;long             _file;int              _charbuf;int              _bufsiz;char*            _tmpfname;} WinFile;long GetFileSize(char const *filename) {struct stat st;stat(filename, &st);return st.st_size;
}int IsDirectory(char const *filename) {struct stat st;stat(filename, &st);return st.st_mode & S_IFDIR;
}int main() {//  int result = remove("data_copy/io_utils.h");
//  PRINT_INT(result);  // 0 删除成功
//  result = remove("data_copy/io_utils2.h");
//  PRINT_INT(result);  //-1 文件找不到//utf8格式需要设置localesetlocale(LC_ALL, "zh_CN.utf-8");//重命名
//  rename("data_copy/三国演义.txt", "data_copy/sanguo.txt");//创建临时文件
//  FILE *file = tmpfile();
//  WinFile *win_file = (WinFile *) file;
//  puts(win_file->_tmpfname);
//  fclose(file);//判断大小\是否是目录PRINT_LONG(GetFileSize("data/三国演义.txt"));PRINT_INT(IsDirectory("data/三国演义.txt"));PRINT_INT(IsDirectory("data"));return 0;
}

C--文件管理(二)相关推荐

  1. linux默认归档目录,Linux系统管理(第4章:目录和文件管理二)

    Linux系统管理(第4章:目录和文件管理二) 一.练习文件查看及检索操作 1.查看/etc/filesystems文件,确认当前系统支持的文件系统类型 Cat:用于连接多个文件的内容,更多用于查看文 ...

  2. Linux-目录和文件管理(二)

    linux-目录和文件管理(二)4.1查看及检索文件 a)查看文件内容1.Cat命令--显示并连接文件的内容(只显示文件尾部) 命令格式: cat[ 选项 ]文件名 . . . Eg:参看/etc/s ...

  3. python实现简单的api接口-简单实现Python调用有道API接口(最新的)

    # ''' # Created on 2018-5-26 # # @author: yaoshuangqi # ''' import urllib.request import urllib.pars ...

  4. Egret资源管理解决方案

    关于egret开发H5页游,资源管理和加载的一点看法. 一 多json文件管理 二 资源归类和命名 三 exml文件编写规范 四 资源预加载.分步加载.偷载 五 资源文件group分组 六 ResUt ...

  5. 【插件发布】JAVA微服务框架,Jeecg-P3-Biz-OA 1.0.0 插件开源发布

    JAVA微服务框架,Jeecg-P3-Biz-OA 1.0.0 插件开源发布 OA办公插件,采用JEECG-P3微服务框架技术,实现OA办公基本功能,H5页面素材:相册管理.联系人.联系人详细.报表. ...

  6. linux 重定向_Linux视频教程分享,零基础在家你也可以学的会

    在IT行业,可以说Linux系统已经渗入到各个角落,无论是从事什么语言的编程人员,对Linux应该都要有所了解.下面,千锋小编就为大家分享Linux资料帮助新手快速入门. 主要介绍了Linux系统的详 ...

  7. 电脑内存不足,QQ数据占用过大,对小白友好清理方法

    没想到啊,QQ的数据占用有这么大 之前以为自己每次删除一些新下载的东西,就是接收的文件图片视频啥的,看了觉得没用就会清理掉,就以为QQ的数据没有多大,结果不清不知道,一清理吓一跳,竟然占用了40多个G ...

  8. 工欲善其事,必先利其器,电脑上这些软件堪称惊艳

    大家好,我是辣条. 在学习.职场.办公我们会接触到各种类电脑软件,安装好这些软件,让你效率快速到起飞. 领取福利 300+Python经典编程案例 50G+学习视频教程 100+Python初阶.中阶 ...

  9. Linux学习1—文件和用户的管理

    文章目录 一.文件管理 二.用户管理 一.文件管理 Linux以单根的方式组织文件/ Linux文件组织 : bin:普通用户使用的命令 sbin:管理员使用的命令 dev:设备文件 root:roo ...

  10. Python学习笔记:5.2.8 javascript打飞机实战练习

    本文是学习陆老师的<python全栈工程师 - web开发前端基础>课程的笔记,欢迎学习交流.同时感谢陆老师的精彩传授! 一.课程目标 打飞机场景构建 利用js实现动画 构造函数及原型继承 ...

最新文章

  1. word2vec安装以及使用
  2. ADO.NET知识要点
  3. R语言paste函数
  4. join left semi_HIVE--left semi join
  5. Android 系统(172)---如何使用addr2line命令解析native backtrace
  6. .NET项目工程生成一份项目帮助文档chm--Sandcastle工具
  7. 【脑电信号】基于matlab小波工具箱脑电降噪【含Matlab源码 707期】
  8. BM3D算法半解,带python代码
  9. 正则表达式re中的group含义
  10. 社招/实习/春招 | 字节跳动 | 抖音-隐私合规团队 | 北京/杭州 【岗位急招,部门直推,hc多多,欢迎投递~~~】
  11. java导出CSV文件
  12. CentOS自动同步互联网服务器时间
  13. uniapp App端 echarts 设置tooltip的formatter不生效问题及解决办法
  14. python 自动上色_Github | 线稿自动上色
  15. Tyrion中文文档(含示例源码)
  16. MYSQL给表或者字段写注释
  17. 西安外国语大学计算机语言学,2017年西安外国语大学语言学及应用语言学832现代汉语考研题库...
  18. 送你一份2019年最新最全的技能图谱(附思维导图)!
  19. bestcoder#86 T1~T3
  20. python数据分析怎么学

热门文章

  1. 洛谷 P1774 最接近神的人_NOI导刊2010提高(02)
  2. 内蒙古计算机专修学院单招,内蒙古单招考什么科目
  3. 推荐:优盘安装系统工具-大白菜
  4. 自助建站系统有什么优势
  5. FPGA芯片选型和命名规则
  6. 笔记整理3——python实现MAC分析地理位置
  7. 重磅发布!腾讯云 ASW 工作流,可视化编排云服务
  8. 【今日数据】 2022年最新的中国分层级(全国、省、城市)道路矢量数据(OSM)
  9. 如何解决Camtasia下载安装时“2503”报错
  10. 鸡蛋问题的分析与C++实现