C 将文本文件内容逆序打印

方法一:文件指针固定,依靠偏移量来访问文件内容

 1 void reverse(FILE* fpin)
 2 {
 3     long count = 0;
 4     fseek(fpin, 0, SEEK_END);
 5     while(fseek(fpin,--count,SEEK_END) == 0)
 6     {
 7         fseek(fpin, count, SEEK_END);
 8         putc(getc(fpin), stdout);
 9     }
10 }

方法二: 偏移量固定,依靠SEEK_CUR当前指针来访问文件内容

 1 void reverse(FILE* fpin)
 2 {
 3     char ch;
 4     //将文件指针定位到尾部
 5     fseek(fpin, 0, SEEK_END);
 6     //当前指针向文件头部偏移1位,当超出文件范围时退出
 7     while (fseek(fpin, -1, SEEK_CUR) == 0)
 8     {
 9         //获取当前文件指针指向的内容,此时文件指针会自动向文件尾部移动1位
10         ch = getc(fpin);
11         //向屏幕打印当前字符
12         putc(ch, stdout);
13         //将当前指针向文件头部偏移1位以纠正读取指针的偏移量
14         fseek(fpin, -1, SEEK_CUR);
15     }
16 }
时间: 2024-10-06 14:40:42

C 将文本文件内容逆序打印的相关文章

用递归正/逆序打印一个数组,以及调用返回的过程理解

1 #include <stdio.h> 2 /* 3 题目:用递归正/逆序打印数组的元素,以及递归调用的过程理解 4 正序打印数组解题思路:第一:数组元素是连续的.知道第一个元素的地址,就能推算出第二个元素的地址.以此类推 5 第二:数组的结束条件:i = sizeof(arr)/4 -1; 此时的值为arr[sizeof(arr)/4-1]; 6 第三:后一个元素的值的下标 = 前一个元素的值的下标+1 (通项公式) 7 */ 8 void arr1(int *p,int n,int *p

Python练习题 024:求位数及逆序打印

[Python练习题 024] 给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. ---------------------------------------------- 这题如果不用递归,实在太简单了!!!代码上: str = input('请输入一个不多于5位的正整数:') print('这个数字是%s位数,逆序为%s.' % (len(str), str[::-1])) 输出结果如下: 请输入一个不多于5位的正整数:45931这个数字是5位数,逆序为13954

输入一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

package com.hanqi; import java.util.*; public class Nixudayin { public static void main(String[] args) { // TODO 自动生成的方法存根 System.out.println("输入一个不多于5位的正整数"); Scanner shu=new Scanner(System.in); String a=shu.next(); System.out.println("输入的

九度OJ 1525 子串逆序打印

题目1525:子串逆序打印 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2404 解决:388 题目描述: 小明手中有很多字符串卡片,每个字符串中都包含有多个连续的空格,而且这些卡片在印刷的过程中将字符串的每个子串都打印反了,现在麻烦你帮小明将这些字符串中的子串修正过来,同时为了使卡片美观,压缩其中的连续空格为1个. 输入: 输入包含多个测试用例,每个测试用例的第一行是一个正整数 n,1=<n<=100000,代表卡片上字符串的长度.第二行输入长度为n的字符串(字符串仅包含小写

单链表逆序打印!

单链表打印的时候 一般 if (p== NULL) return; printf("%d ",p->data ); reverse_show(p->next); 结果: 123456 就可以依次打印了 但是如果把打印语句放在后面 就会逆序打印 if (p== NULL)return; reverse_show(p->next); printf("%d ",p->data ); 结果 654321 这是因为退出的时候 是从后面进行的!

C语言实现双向非循环链表的逆序打印

我在上一篇博客中<C语言实现双向非循环链表>实现了如何构造一个双向非循环链表,并实现了正向打印.我还在之前一篇博客<C语言实现单链表的逆序打印>中实现了单链表的逆序打印.这篇博客我们来实现对双向非循环链表进行逆序打印,实现起来非常的简单.代码已经上传至 https://github.com/chenyufeng1991/ReverseDoubleLinkedList . 核心代码如下: //打印非循环双向链表,这个其实是正向打印 void printList(Node *pNode

C语言实现链表的逆序打印

我在前面几篇博客中<C语言实现链表节点的插入><C语言实现链表节点的删除><C实现头插法和尾插法来构建链表><C语言实现链表的基本操作>实现了链表的很多增删改查操作.这里我们要来实现链表的逆序打印,使用C来实现.代码上传至 https://github.com/chenyufeng1991/ReverseLinkedList . 基本算法是: (1)使用尾插法构建原链表: (2)依次遍历原链表: (3)取出遍历中的节点使用头插法建立一个新链表: (4)打印逆

C++链表逆序打印节点

#include <iostream> #include <stack> using namespace std; template<typename Type> struct Node { Type data; Node *next; Node(Type d = Type()):data(d),next(NULL){} }; template<typename Type> class List { public: List() { head = NULL;

逆序打印

才开始学习Python,我个人喜欢边看实例边学习其中的知识点,于是在网上找到了“Python100例”, 案例很不错,但是其中有几个例子不能正确实现,比如第29个例子--“给一个不多于5位的正整数, 要求:一.求它是几位数,二.逆序打印出各位数字”,如下图: 上面写的方法运行的时候是不正确的,如果有同样在开始学习Python的朋友不清楚怎么写的话可以试试: number = raw_input()print '该数为%d位数' % len(number) # 逆序打印出各位数字str = str