Linux C/C++基础——文件(上)
1.文件指针
FILE* fp=NULL;
- fp指针,只调用了fopen(),在堆区分配空间,把地址返回给fp
- fp指针不是指向文件,fp指针和文件关联,fp内部成员保存在文件的状态
- 操作fp指针,不能直接操作,必须通过文件库函数来操作fp指针
- 通过库函数操作fp指针,对文件的任何操作,fp里面成员会相应的变化(系统自动完成)
- FILE所有平台的名字都一样,FILE是一个结构体,里面的成员功能一样,不同平台成员的名字不一样
2.文件的操作
c语言中三个特殊的文件指针(无需定义可直接使用):stdin、stdout、stderr
3.文件的打开
文件的路径:
补充:在VS中,相对路径
a.编译同时直接运行程序,相对路径,相对于xxxx.vcxproj(项目文件)所在的路径
b.如果直接在Debug中直接运行程序,相对路径相对于可执行程序
在Qt中
a.编译同时直接运行程序,相对路径,相对于项目文件夹所对应的build中的debug所在的路径
b.如果直接在Debug中直接运行程序,相对路径相对于可执行程序
#include<stdio.h> int main()
{
FILE*fp=NULL;
//打开成功,返回有效地址
//打开失败,返回NUULL
fp=fopen("./08txt","r");//文件不存在
if(fp==NULL)
{
perror("fopen");
return ;
}
fclose(fp);
fp=NULL;
return ;
}
4.文件的写入
#include <stdio.h>
int fputc(int ch, FILE * stream);
功能:将ch转换为unsigned char后写入stream指定的文件中,输入的字符最终转化为数字,每次写入一个字符
参数:
ch:需要写入文件的字符
stream:文件指针
返回值:
成功:成功写入文件的字符
失败:返回-1
#include<stdio.h>
#include<string.h> int main()
{
FILE *fp;
fp=fopen("08.txt","w");
if(fp==NULL)
{
perror("fopen"); return -;
}
fputc('a',fp);
fputc('b',fp);
fputc('c',fp);
fputc(,fp); char ch='a';
while(ch<='z')
{
fputc(ch,fp);
ch++;
}
char buf[]="zxcvbnm";
int n=strlen(buf);
for(int i=;i<n;i++)
{
fputc(buf[i],fp);
} fclose(fp);
fp=NULL; return ;
}
5.文件的读
#include <stdio.h>
int fgetc(FILE * stream);
功能:从stream指定的文件中读取一个字符,每次读出一个字符,读完光标自动跳转到下一个字符前
参数:
stream:文件指针
返回值:
成功:返回读取到的字符
失败:-
文件末尾的判断
在C语言中,EOF表示文件结束符(end of file)。
在while循环中以EOF作为文件结束标志,
这种以EOF作为文件结束标志的文件,必须是文本文件。
在文本文件中,数据都是以字符的ASCII代码值的形式存放。
我们知道,ASCII代码值的范围是0~,不可能出现-,
因此可以用EOF作为文件结束标志。
if(ch==EOF)等价于if(ch==-1)
当把数据以二进制形式存放到文件中时,就会有-1值的出现,
因此不能采用EOF作为二进制文件的结束标志。
为解决这一个问题,ANSI C提供一个feof函数,用来判断文件是否结束。
feof函数既可用以判断二进制文件又可用以判断文本文件。
feof(fp);
- 如果第一次没有对文件进行读操作,直接调用此函数,永远返回假(文件没有到结尾)
- 此函数必须,先读,再调用feof()才有意义
- 调用此函数,光标不会自动往后移动
- 必须读取后,才能判断是否结束,判断的是读取的字符
#include<stdio.h>
#include<string.h> int main()
{
FILE *fp;
fp=fopen("09.txt","w");
if(fp==NULL)
{
perror("fopen"); return -;
}
char ch='a';
while(ch<='z')
{
fputc(ch,fp);
ch++;
}
fclose(fp);
FILE *fp1=fopen("09.txt","r");
char chr;
while()
{
chr=fgetc(fp1);
printf("chr=%d\n",chr);//以字符形式输出
if(chr==-)
{
break;
}
}
fclose(fp1);
fp=NULL; return ;
}
Linux C/C++基础——文件(上)的更多相关文章
- Linux小工具:文件上传ftp服务器
工作期间,每次将文件上传至ftp服务器时,均需要手工输入ip.用户名.密码等,因此,考虑编写脚本完成文件的上传任务.具体的脚本sync.sh如下: #!/bin/bash source ~/.bash ...
- linux下将本地文件上传到github中?
今天编写一份Python基础代码,经过Linux上传到github上,遇到点问题,已经解决 1.首先sudo su 进入root 用户 2.ls 检查出当前文件下有什么文件 3. cd 进入你将要上传 ...
- linux 客户端与linux服务器端连接与文件上传下载
linux客户端连接linux服务器 用ssh 可以用 man ssh 查看用法 基本格式: ssh 用户名@主机名 如: ssh root@1.1.1.1 linux客户端上传文件到 linux 服 ...
- Linux C/C++基础 文件(下)
1.fgets和fputs #include <stdio.h> int fputs(const char * str, FILE * stream); 功能:将str所指定的字符串写入到 ...
- Linux C/C++基础 文件(中)
1.ubuntu cat命令的实现 cat——查看或者合并文件内容 #include<stdio.h> int main(int argc,char* argv[]) { //1.打开文件 ...
- chattr - 修改文件在Linux第二扩展文件系统(E2fs)上的特有属性
SYNOPSIS(总览) chattr [ -RV ] [ -v version ] [ mode ] files... DESCRIPTION(描述) chattr 修改文件在Linux第二扩展文件 ...
- Linux—文件上传和下载
一.通过SecureCRT的rz.sz实现文件的上传和下载 1.检查是否安装sz rz,命令如下 [root@localhost ~]# rpm -qa | grep rz # 上传 [root@l ...
- 03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-其他基础命令
03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-{1..100}-du-cd-cp-file-mv-echo-id-she ...
- linux文件上传
租了个服务器,要把自己打的war包打上去发布,服务器是linux的(本机是mac).以前都是用wget命令,把需要上传的东西先放到github上面再在服务器上用wget命令下载.最近不知道什么原因,w ...
随机推荐
- 14-SQLServer索引碎片
一.总结 1.数据库的存储本身是无序的,建立聚集索引之后,就会按照聚集索引的物理顺序存入硬盘: 2.建立索引完全是为了提升读取的速度,相对写入的速度就会降低,没有索引的表写入时最快的,但是大多数系统读 ...
- java 和 c#返回值方法
java 和 c#都是应用很广泛的语言,也互有优劣. 这两者都是面向对象的语言,在一个方法中如果类型不是void那么是需要return一个返回值的. 但是如果想要返回多个值该怎么办? 排除直接返回一个 ...
- guava的一些用法
package guavaTest; import com.google.common.base.CharMatcher; import com.google.common.base.Joiner; ...
- 课程 6;比特币产生,分配(2100w,10个矿区)
www.8btc.com (每21w个,减半分配)
- 为微信二维码添加gif动态背景
环境准备 来源: https://github.com/sylnsfar/qrcode/blob/master/README-cn.md#%E5%8A%A8%E6%80%81gif%E4%BA%8C% ...
- prop(name|properties|key,value|fn)
prop(name|properties|key,value|fn) 概述 获取在匹配的元素集中的第一个元素的属性值.直线电机选型 随着一些内置属性的DOM元素或window对象,如果试图将删除该属性 ...
- BZOJ1706奶牛接力跑
这个东西思路还是不错的. 解法就是把矩阵幂的加法改成取min,乘法改成加法就好,和floyed是一样的.这样的话,矩阵操作一次就相当于松弛了一次最短路. 建矩阵的过程也比较简单,可以离散化,当然下面有 ...
- 认识HTML语言(CodePen)
认识HTML语言 1.一个网页的加载过程 2.Web技术全览 3.HTML语法 HTML语法(一):标签 HTML语法(四):网页结构 4.HTML常用元素 展示元素 (1)块级元素div (2)内联 ...
- 编写可维护的JavaScript代码(部分)
平时使用的时VS来进行代码的书写,VS会自动的将代码格式化,所有写了这么久的JS代码,也没有注意到这些点.看了<编写可维护的javascript代码>之后,做了些笔记. var resul ...
- TortoiseGit的安装
运行TortoiseGit-1.7.7.0-32bit.msi, 如下图 点击Next, 下一步 点击Next, 下一步 选择ssh客户端, 使用默认, 点击Next, 下一步 选择安装路径, 点击N ...