社区
C++ 语言
帖子详情
关于文本文件的格式问题,用fgetc()函数读文件的每个字符,文件中的空格和换行怎么表示
AvalonZST
2010-06-01 01:43:06
#include<iostream>
#include<stdio.h>
using namespace std;
void main(){
FILE *fp;
FILE *p;
p=fopen("write.txt","w");
fp=fopen("test.txt","r");
char c=fgetc(fp);
while(c!=EOF)
{
cout<<c<<'*';
putc(c,p);
c=fgetc(fp);
}
fclose(fp);
}
此代码运行后结果如图,请高手指教:
...全文
191
6
打赏
收藏
关于文本文件的格式问题,用fgetc()函数读文件的每个字符,文件中的空格和换行怎么表示
#include #include using namespace std; void main(){ FILE *fp; FILE *p; p=fopen("write.txt","w"); fp=fopen("test.txt","r"); char c=fgetc(fp); while(c!=EOF) { cout<<c<<'*'; putc(c,p); c=fgetc(fp); } fclose(fp); } 此代码运行后结果如图,请高手指教:
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
赵4老师
2010-06-02
打赏
举报
回复
[Quote=引用 5 楼 zhuzhuxiazst 的回复:]
请问为什么回输出“?”了?
是编译器规定的么?
[/Quote]
摒弃cout
使用printf
AvalonZST
2010-06-01
打赏
举报
回复
请问为什么回输出“?”了?
是编译器规定的么?
赵4老师
2010-06-01
打赏
举报
回复
' ',0x20
'\n',0x0a
'\r',0x0d
tjyjx7946358
2010-06-01
打赏
举报
回复
看不到图。。。
macrojj
2010-06-01
打赏
举报
回复
图呢 图呢。。。。
AvalonZST
2010-06-01
打赏
举报
回复
请各位大侠们自己运行一下,然后给咱稍微解释下结果里面的??是什么!!!
13.第十三章
文件
.txt
第十三章
文件
对数据的管理无论是用数组还是链表,都是存储在内存
中
的,程序结束后都会丢失,下一次运行程序时,要重新输入或运算生成数据。要把程序运行的数据保存起来以便下次运行继续使用,在计算机
中
持久保存数据的方式是利用
文件
保存。 13.1
文件
概述
文件
一般是指存储在外部介质上数据的集合。
文件
以数据形式存放在外部介质上,操作系统以
文件
为单位对数据进行管理。想找到存在外部介质上的数据,必须按
文件
名找到指定的
文件
然后再从该
文件
中
读
取数据。要想在外部介质上存储数据必须先建立一个
文件
(以
文件
名标识),才能向它输出数据。从操作系统角度,每一个与主机相连的输入输出设备都可以被看作一个
文件
。在程序运行时,常常需要将一些数据(运行的最终结果或
中
间数据)输出到磁盘上保存,以后要用时再从磁盘
中
输入到计算机的内存,这就要用到磁盘
文件
。 操作系统的
文件
标识包括三部分: (1)
文件
路径:
表示
文件
在外部存储设备
中
的位置。 (2)
文件
名:遵循标识符的命名规则。 (3)
文件
扩展名:
表示
文件
的性质(.txt .dat .c)。 如:d:\c++\temp\flie1.dat
文件
操作是一种典型的IO操作(输入输出操作)。输入输出是针对内存而言的,进内存为输入,出内存为输出。 标准输入输出就是标准输入设备(键盘)和标准输出设备(显示器),键盘和显示器就是一种
文件
。C语言将
文件
看成
字符
(字节)的序列,即由一个一个
字符
(字节)的数据顺序组成。C语言
中
对
文件
的存取是以
字符
(字节)为单位的,输入输出数据流的开始和结束仅受程序控制不受物理符号控制(如回车
换行
符)。输出时不会自动增加回车
换行
符作为记录结束的标志,输入时不以回车
换行
符作为记录的间隔(实际上C
文件
不是由记录构成的),这种
文件
称为流式
文件
。 ANSI新标准
文件
采用缓冲方式,系统自动地在内存区为每一个正在使用的
文件
开辟一个缓冲区。从内存向磁盘输出数据必先送到输出缓冲区,装满缓冲区后才一起送到磁盘。从磁盘向内存输入数据先送到输入缓冲区,程序需要数据时去缓冲区
读
取,若缓冲区无数据,则程序进入阻塞状态(等待数据)。 C语言把数据看作是一连串的
字符
(字节),根据数据的组成形式,分为ASCII
文件
和二进制
文件
。
文本
文件
又称ASCII
文件
,
每个
字节存放一个ASCII码,代表一个
字符
。如1、2的ASCII码分别为49、50,所以整数12用ASCII
文件
存放时,存放形式为00110001 00110010 二进制
文件
是直接用数据的二进制形式存放的,即把内存
中
的数据按其在内存
中
的存储形式原样输出到磁盘上存放。 程序
中
实现对
文件
的处理通常分三步: (1)打开
文件
:将程序与
文件
建立联系。 (2)操作
文件
:对
文件
进行
读
写操作,即输入输出。 (3)关闭
文件
:操作完成应当切断
文件
与程序的联系。 C语言
中
没有输入输出语句,对
文件
的
读
写都是用库
函数
实现的。ANSI规定了标准输入输出
函数
,用它们对
文件
进行
读
写,这些
函数
的声明包含在头
文件
stdio.h
中
。 13.2
文件
的打开与关闭
文件
进行
读
写操作前先要打开,使用完毕要关闭。打开
文件
,是建立
文件
的各种有关信息,并使
文件
指针指向该
文件
,以便进行其他操作。关闭
文件
则断开指针与
文件
之间的联系。 1.打开
文件
(fopen
函数
) 原型:FILE *fopen(char *filename, char *mode); FILE是在stdio.h头
文件
中
定义的一个结构体,用来保存
文件
信息。 fopen
函数
用来打开一个
文件
,其调用的一般形式为:
文件
指针名=fopen(
文件
名,使用
文件
方式); 其
中
: ·“
文件
指针名”必须是被说明为FILE类型的指针变量。 ·“
文件
名”是被打开
文件
的
文件
名,是
字符
串常量或
字符
串数组。 ·“使用
文件
方式”是指
文件
的类型和操作要求。 如: FILE *fp; fp=fopen("file1.txt","r"); 其意义是在当前目录下打开
文件
file1.txt,只允许
读
操作,并使fp指向该
文件
。 又如: FILE *fp; fp=fopen("c:\\file2.txt","rb"); 意义是打开C驱动器磁盘根目录下的
文件
file2.txt,对其按二进制方式进行
读
操作。两个反斜线\\
中
的第一个
表示
转义
字符
,第二个
表示
根目录。
文件
打开方式 r 只
读
打开一个
文本
文件
,只允许
读
数据 w 只写打开或建立一个
文本
文件
,只允许写数据 a 追加打开一个
文本
文件
,并在
文件
末尾写数据 r+
读
写打开一个
文本
文件
,允许
读
和写 w+
读
写打开或建立一个
文本
文件
,允许
读
和写 a+
读
写打开一个
文本
文件
,允许
读
和在
文件
末尾写数据 rb 只
读
打开一个二进制
文件
,只允许
读
数据 wb 只写打开或建立一个二进制
文件
,只允许写数据 ab 追加打开一个二进制
文件
,并在
文件
末尾写数据 rb+
读
写打开一个二进制
文件
,允许
读
和写 wb+
读
写打开或建立一个二进制
文件
,允许
读
和写 ab+
读
写打开一个二进制
文件
,允许
读
和在
文件
末尾写数据 (1)
文件
使用方式由r、w、a、b、+拼成,含义分别为: r(read)
读
w(write) 写 a(append) 追加 b(binary)二进制
文件
+
读
和写 (2)用r方式打开
文件
时
文件
必须存在,只能从该
文件
读
出。 (3)用w方式打开只能向
文件
写入。若打开的
文件
不存在,则以指定的
文件
名建立新
文件
。若存在,则将存在的
文件
删除,重建新
文件
。 (4)向一个已存在的
文件
追加新的信息,只能用a方式打开。
文件
必须存在,否则会出错。 (5)打开
文件
出错时fopen将返回一个空指针值NULL。程序
中
可用这一信息判断是否完成打开
文件
的工作,并做相应的处理。因此常用以下程序段打开
文件
: if((fp=fopen("c:\\file2.txt","rb"))==NULL) { printf("\nerror on open c:\\file2.txt!"); exit(0); } (6)把
文本
文件
读
入内存时,要将ASCII码转换成二进制码。把内存数据以文本方式写入磁盘时,要将二进制码转换成ASCII码。因此
文本
文件
的
读
写花费较多的转换时间,对二进制
文件
的
读
写不存在这些转换。 (7)标准输入
文件
(键盘)、标准输出
文件
(显示器)、标准出错输出(出错信息)是由系统打开的,可直接使用。 2.关闭
文件
(fclose
函数
)
文件
使用完毕,应用关闭
文件
函数
把
文件
关闭,从而把缓冲区的数据写入
文件
中
。否则程序结束时可能造成数据丢失。 fclose
函数
使用形式: fclose(
文件
指针); 如:fclose(fp); 正常完成关闭
文件
操作时,fclose
函数
返回值0。发生错误时返回EOF。 13.3
文件
读
写 对
文件
的
读
和写是最常用的
文件
操作,在C语言标准库
中
提供了多种
文件
读
写的
函数
。
字符
读
写
函数
:fgetc和fputc
字符
串
读
写
函数
:fgets和fputs 数据块
读
写
函数
:fread和fwrite
格式
化
读
写
函数
:fscanf和fprintf 13.3.1
字符
读
写
函数
1.
读
字符
函数
fgetc 规格:int fgetc(FILE * stream); 功能:从指定的
文件
中
读
一个
字符
。 参数:stream为指向
文件
的指针。 返回值:从stream所指的
文件
流
中
读
取一个
字符
,转换为int类型返回。若已到
文件
尾返回EOF,
文件
状态改为结束状态。若
读
错误返回EOF,
文件
改为错误状态。EOF在stdio.h
中
定义为-1。 例如: ch=fgetc(fp); 其含义是从打开的
文件
fp
中
读
取一个
字符
并送入ch
中
。 对于fgetc
函数
的使用有几点说明: (1)在fgetc
函数
调用
中
,
读
取的
文件
必须是以
读
或
读
写方式打开的。 (2)
文件
内部有一个位置指针,用来指向
文件
的当前
读
写字节,
文件
打开时,位置指针总指向
文件
的第一个字节。使用fgetc
函数
后位置指针向后移动一个字节。因此可连续多次使用fgetc
函数
读
取多个
字符
。
文件
指针是指向整个
文件
的,要在程序
中
定义说明,只要不重新赋值
文件
指针值不变。
文件
内部的位置指针用于指示
文件
内部的当前
读
写位置,每
读
写一次,位置指针向后移动,它无需在程序
中
定义说明,由系统自动设置。 例:
读
取
文本
文件
file.txt,把其
中
所有非
空格
字符
输出在标准输出设备上。 #include
#include
#include
int main() { FILE *fp; char ch; if((fp=fopen("file.txt","r"))==NULL) { printf("\nCan't open file,strike any key exit!"); getch(); /*等待敲键盘,显示Can't open file,strike any key exit!*/ exit(1); /*结束程序*/ } ch=fgetc(fp); while(ch!=EOF) /*
文件
结束时
读
取得到EOF*/ { if(ch!=' ') putchar(ch); ch=fgetc(fp); } fclose(fp); return 0; }
C语言——
文件
操作(实现带
空格
字符
串任意
读
写)
本文主要是记录自己在实现带有
空格
字符
串任意
读
写时所遇到的
问题
与解决方法。
字符
串形式为“G1 X500 Y600 F1200”,这是Cura软件生成的打印程序代码
格式
。 我们先了解一下
文件
操作都有那些
函数
:
文件
的
读
写操作: fgetc ()从
文件
中
读
取一个
字符
函数
原型:int fgetc(FILE *fp);功能说明 :从fp所指
文件
中
读
取一个
字符
。参数说明 :fp
文件
指针,它指向...
C语言
文件
读
写
函数
总结
目录 一、
字符
读
写 1、
字符
写入
文件
函数
fputc 2、从
文件
中
读
取
字符
fgetc 二、
字符
串的
读
写 1、
字符
串写入
文件
函数
fputs 2、从
文件
中
读
取
字符
fgets 三、块数据
读
写 1、向
文件
中
写入块数据fwrite 2、从
文件
中
读
取块数据fread 四、
格式
化
读
写 1、
格式
化写入
文件
fprintf 2、从
文件
中
格式
化
读
取fscanf 五、一些注意点 1、fp...
C语言
中
文件
操作使用fgetc()输出出现多余
空格
问题
#include<stdio.h> int main() { //定义
文件
指针 FILE *fp; char ch; int word=0,num=0,oth; if((fp=fopen(“a.txt”,“r”))==NULL){ printf(“
文件
打开错误\n”); }else{ ch=fgetc(fp); while(!(feof(fp))){ putchar(ch); ch=fgetc(fp); } } } #include<stdio.h> int main() { //定
C语言基础14——
文件
操作。
文本
文件
或二进制
文件
读
写。通讯录的改造。
文件
缓冲区讲解
目录 为什么使用
文件
? 什么是
文件
?
文件
的打开和关闭
文件
指针
文件
的打开和关闭
文件
的打开方式 流 重定义
文件
文件
流
文件
的顺序
读
写 以
字符
形式
读
写
文本
文件
fputc()
函数
fgetc()
函数
以
字符
串形式
读
写
文本
文件
fputs()
函数
fgets()
函数
格式
化
读
写
文件
fprintf()
函数
fscanf()
函数
以数据块的形式
读
写
文件
fwrite()
函数
fread()
函数
三种输入/输出
函数
的比较 改造通讯录
文件
的随机
读
写 fsee
C++ 语言
64,682
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章