在linux系统下与github交互

1、创建仓库
在github下创建自己的仓库
2、安装git
sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
sudo apt-get install git
3、配置个人信息
git config --global user.name “用户名”
git config --global user.email “邮箱”
4、生成密钥
ssh-keygen -t rsa -C “邮箱”
会在用户主目录.ssh/id_rsa.pub 生成密钥文件,打开后复制。
5、登记客户端密钥
在github中
Settings->SSH and GPG keys->NEW SSH key
粘贴后并设置标题,ADD SSH key
6、验证 ssh -T git@github.com
7、克隆仓库
git clone https://github.com/自己的ID/自己的库
(或者与他人共享之后克隆他人的id)
8、添加文件
git add file.c 添加单个文件
git add . 添加当前目录所文件
9、提交
git commit -m “说明”(对这次提交的修改内容进行简单说明)
(要先add再commit)
10、上传到github
git push origin master
输入用户名密码

文件的分类:

文本文件:ASCII码的二进制’2’‘5’‘5’
二进制文件:存储的是数据的二进制 11111111
255

文件IO
FILE *fopen(const char *path, const char *mode);
如: FILE *fp=fopen(“test.txt”, “r”)
功能:打开或者穿件文件
path:文件的路径
mode:文件打开的模式
r 只读权限打开文件,如果不存在则打开失败(返回空
r+ 在r的基础上怎家写权限
w 只写权限打开文件,如果文件不存在则新建,如果文件存在则清空
w+ 在w的基础上增加读权限
a 只写权限打开文件,如果文件不存在则新建,如果文件存在不清空,新写入的数据在文件的末尾
a+ 在a的基础上增加读权限
以上方式是以文本形式操作文件,在他们基础上加b(linux下没用windows下有用)表示以纯二进制形式操作文件
返回值:结构指针不需要惯性它的成员,只需要知道他是操作文件的凭证
以上方式打开都是文本文件\n会变成两个字节\n\r

  • 二进制方式读写
    size_t fwrite(congst void* ptr,size_t size,size_t nmemb,FILE *stream);
    功能:把内存中的数据写入到文件中
    ptr:内存地址
    size:一次写入多少字节
    nmemb;写入多少次
    stream:文件指针 fopen的返回值
    返回值:成功写入的次数
    size_t fread(void *ptr, size_t size, size_t nmemb,FILE *stream);
    功能:从文件中读取数据到内存
    size:一次读取多少字节
    nmemb:读取多少次
    stream:文件指针 fopen的返回值
    返回值:成功返回的次数

参考代码

#include <stdio.h>int main(int argc,const char* argv[])
{FILE* frp = fopen("test.txt","r");if(NULL == frp){perror("fopen");return 1;}char buf[255] = {};int ret = fread(buf,1,255,frp);printf("%s\n",buf);printf("%d\n",ret);
}
  • 文本方式读写
    int fprintf(FILE* stream, const char* foramt,…)
    功能:以文本形式写入数据到文件
    stream:要写入的文件
    format:占位符和提示信息
    …:变量名
    返回值:成功写入的字节数
    int fscanf(FILE* stream, const char* foramt,…)
    stream:要读取的文件
    format:占位符和提示信息
    …:变量名地址
    返回值:成功读取的变量个数

    int fclose(FILE *fp)
    尽量在完成读写操作后就关闭文件,以免误操作
    功能:关闭文件(文件写完之后想立即读取)(文件读写也有缓存区)

  • 文件位置指针:
    每个打开的文件都有一个指针记录着操作的位置,他会随着读写函数而移动,以r、r+、w、w+打开的文件位置指针在开头,以a、a+打开的文件位置指针在末尾
    如果想速记读取文件的任何位置数据需要手动设置文件的位置指针
    int fseek(FILE *stream, long offset,int whence);
    fseek(fwp,0,SEEK_SET)
    功能:设置文件的位置指针
    stream: 要设置的文件
    offset: 偏移值
    whence: 基础位置
    SEEK_SET 文件开头
    SEEK_CUR 当前位置
    SEEK_END 文件末尾
    返回值: 成功返回0失败返回-1
    如:fseek(fwp,-20,1)
    就是返回到当前行返回20个偏移值

      void rewind(FILE *stream);功能:把文件位置指针设置到开头void ftell(FILE *stream);功能:获取文件位置指针的位置返回值:第几个字节其他不常用函数int feof(FILE *stream);检查文件位置指针是否到达末尾返回值:返回0到达末尾,没到末尾是非0值char *fgets(char *s,intsize,FILE *stream);从文件中读取一行字符串int fputs(const char *s, FILE *stream);写入一个字符串到文件会自动加\n返回值:成功返回输入的字符 int fputs(const char *s, FILE *stream);写入一个字符串到文件,会自动添加一个\n成功读取到的字符个数int fputc(int c, FILE *stream);功能:写入一个字符串返回值:成功返回定稿的字符,失败返回-1。int fgetc(FILE *stream);功能:从文件中读取一个字符返回值:失败返回-1int remove(const char *pathname);功能:删除文件返回值:成功返回0,失败返回-1int rename(const char *old, const char *new);功能:重命名文件返回值:成功返回0,失败返回-1
    

    main函数参数
    是为了获取命令行附加的参数
    argc 代表参数的个数
    argv (指针数组)每个字符串的首地址
    实现CP命令

#include <stdio.h>
int main(int argc,const char* argv[])
{if(3 != argc){printf("User: cp src dest\n");return 0;}FILE* src = fopen(argv[1],"r");if(NULL == src){printf("源文件不存在,请检查命令!\n");return 0;}FILE* dest = fopen(argv[2],"r");if(dest){printf("目标文件已存在,是否覆盖(y/n)?");char cmd = getchar();if('y'!=cmd && 'Y'!=cmd){printf("停止拷贝!\n");return 0;}}else{dest = fopen(argv[2],"w");}if(NULL == dest){printf("创建文件失败,请检查路径!\n");return 0;}char buf[256] = {};int ret = 0;while(0 < (ret = fread(buf,1,sizeof(buf),src))){fwrite(buf,1,ret,dest);}fclose(src);fclose(dest);
}

练习做小项目时写的一个函数:

//添加教师
void add_tea()
{printf("输入添加教师的姓名性别工号:\n");int i=0;FILE *frotea=fopen("OLteacher.txt","a+");if(NULL==frotea)//↑从文件中获取在职老师信息{printf("文件不存在");return ;}for(;;i++){if(i==MAX){printf("系统升级中,录入失败\n");break;}fscanf(frotea,"%s %d %d %s %hhd\n", tea[i].tea_name, &tea[i].sex_tea, &tea[i].tea_id, tea[i].tea_password,&tea[i].tea_error);//↑从文件中获取信息--错误次数if(0==tea[i].tea_id){//判断结构体中的空位从文件中读取scanf("%s %d %d", tea[i].tea_name, &tea[i].sex_tea, &tea[i].tea_id);//输入添加的教师--错误次数int str_l=0;strcpy(tea[i].tea_password,"123");tea[i].tea_error=0;str_l+=strlen(tea[i].tea_name);str_l+=sizeof(tea[i].sex_tea);str_l+=sizeof(tea[i].tea_id);//文件指针指回此行开头str_l+=strlen(tea[i].tea_password);str_l+=sizeof(tea[i].tea_error);fseek(frotea,-str_l,1);fprintf(frotea,"%s %d %d %s %2hhd", tea[i].tea_name, tea[i].sex_tea,tea[i].tea_id, tea[i].tea_password,tea[i].tea_error);//--错误次数break;}}fclose(frotea);printf("添加成功\n");usleep(1.0*1000000);
}

linux系统下c语言的文件读写相关推荐

  1. linux系统怎么查看权限设置密码,linux系统怎么查看及修改文件读写权限设置

    在linux中查看与修改文件权限我们都必须使用命令来操作,不能像windows一样点几下就好了,那么linux系统怎么查看及修改文件读写权限设置?接下来大家跟着学习啦小编一起来了解一下linux系统查 ...

  2. linux系统上运行sh,Linux系统下如何运行.sh文件的实现

    Linux系统下如何运行.sh文件的实现 在Linux系统下运行.sh文件有两种方法,比如我在root目录下有个datelog.sh文件 第一种(这种办法需要用chmod使得文件具备执行条件(x): ...

  3. linux通过iso安装php,linux系统下怎么安装iso文件?

    linux系统下怎么安装iso文件? 安装步骤: 1.在/mnt目录下,创建相应的iso文件夹,例如iso. 2.运行以下命令,挂载iso文件mount -o loop /home/tecmint/F ...

  4. linux系统下怎么安装.deb文件?

    linux系统下怎么安装.deb文件? deb 是 ubuntu .debian 的格式. rpm 是 redhat .fedora .suse 的格式. 他们不通用(虽然可以转换一下). deb是d ...

  5. linux系统下 压缩和解压缩文件命令

    linux系统下 压缩和解压缩文件命令 1.把/home目录下面的mydata目录压缩为mydata.zip zip -r mydata.zip mydata #压缩mydata目录 2.把/home ...

  6. Linux系统下删除带锁文件(夹)

    Linux系统下删除带锁文件(夹) 一.问题描述 在Linux系统中删除图标右下角带锁的文件时,系统提示权限不足,无法删除文件 . 二.解决方法 1.鼠标右键准备删除的文件,在弹出的菜单中选择&quo ...

  7. 如何查看linux系统下的各种日志文件 linux 系统日志的分析大全

    如何查看linux系统下的各种日志文件 linux 系统日志的分析大全 日志分类: 1. 连接时间的日志 连接时间日志一般由/var/log/wtmp和/var/run/utmp这两个文件记录,不过这 ...

  8. linux环境下c语言调用lapack,linux系统下C语言调用lapack ,blas库

    在利用C语言编程,经常调用其他的软件包,其中lapack,blas库是最常用的两个库,这里讲下在linux系统下,C语言编程如何调用这两个库: 1.首先讲下blas库的调用,这里以两个向量内积函数为例 ...

  9. linux下双击sh文件夹,Linux系统下如何运行.sh文件的实现

    在Linux系统下运行.sh文件有两种方法,比如我在root目录下有个datelog.sh文件 第一种(这种办法需要用chmod使得文件具备执行条件(x): chmod u+x datelog.sh) ...

最新文章

  1. 这样设计订单系统,同事直呼 666!
  2. python多线程爬取图片
  3. 一个具有20位地址和32位字长的存储器_存储器层次结构(三):高速缓存
  4. Oracle笔记之表空间
  5. 核心概念——节点/边/Combo——内置节点——Diamond
  6. php显示mysql数据实例_php 连接mysql数据库并显示数据 实例 转载 aoguren
  7. HTML 5 meta 标签
  8. 使用C#在VS Code中编写Notebook
  9. Redis Cluster 伪集群的搭建
  10. HDU 4122:Alice's mooncake shop RMQ(2011 Asia Fuzhou Regional Contest )
  11. 用Adomd.net构建最清凉的olap示例
  12. 怎么把PDF文件转换成电子书?教你如何转换
  13. 《小岛经济学》读书笔记摘录
  14. php中lpush(),LPUSH命令_视频讲解_用法示例-redis编程词典-php中文网
  15. 射频电路PCB的设计技巧
  16. word2016自动目录样式修改
  17. 液晶电视面板的类型、等级及鉴别方法
  18. 深度解析 intern 方法
  19. Android使用自带的文件管理器选择文件并读取内容
  20. python深度学习include框架_《用Python实现深度学习框架》上市

热门文章

  1. PMP认证与NPDP认证哪个含金量高?
  2. STM32F407ZGT6控制ESP8266与OV2640下的百度智能图片识别
  3. #10016. 「一本通 1.2 练习 3」灯泡
  4. python生成log文件
  5. 如何查看建筑设计图纸呢?CAD小白如何实现CAD快速看图?
  6. js 实现俄罗斯方块
  7. 新型多功能6轴小型机器人
  8. 从音乐的角度去理解dB
  9. 动画演示深度优先算法搜寻逃出迷宫的路径
  10. 分享几个免费开源api