当前位置: 首页 > news >正文

C语言使用技巧(三十二):读写txt文件指定行指定所有行类型数据

实现demo代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>

char* ReadSpeacialLine(int i)  
{  
    FILE *fp;  
    int size = 0;  
    char *ar ;  
    int num = 40;
    int WhichLine=i;             //指定要读取哪一行
    int CurrentIndex=0;             //当前读取的行
    char StrLine[num];             //每行最大读取的字符数
  
    //二进制方式打开文件  
    char filename[] = "./lining.txt";
  
    if((fp = fopen(filename,"rb")) == NULL)  
    {  
        printf("Error:Open input.c file fail!\n");  
        return NULL;  
    }  
  
    //求得文件的大小  
    fseek(fp, 0, SEEK_END);  
    size = ftell(fp);  
    printf("文件的大小size------>:%d\n",size);
    rewind(fp);  
  
    //申请一块能装下整个文件的空间  
    ar = (char*)malloc(sizeof(char)*size);  
  
    //读文件  控制读取的流
    // fread(ar,2,10,fp);//把fp里面的值读到ar里面,每次读一个,共读10// printf("%s\n",ar);  

    while (!feof(fp)){
        if (CurrentIndex==WhichLine)
         {
             fgets(StrLine,num,fp);  //读取一行
             printf("StrLine这里读取指定行------->%s\n", StrLine); //输出
             return StrLine;
         }
         fgets(StrLine,num,fp);  //读取一行,并定位到下一行
         CurrentIndex++;
 
         printf("这里显示读取所有前面行StrLine----->%s\n", StrLine); //输出
    }


    fclose(fp);  
    free(ar);  
  
    // printf("按任意键继续");  
    // getchar();  
    // getchar();  
    return NULL;
}  

int main(){
    // char *p;
    // p=ReadSpeacialLine(4); 
    ReadSpeacialLine(10) ;
    return 0;
}

执行结果:

gcc freads.c -o freads && ./freads
freads.c: In function ‘ReadSpeacialLine’:
freads.c:48:21: warning: function returns address of local variable [-Wreturn-local-addr]
   48 |              return StrLine;
      |                     ^~~~~~~
文件的大小size------>:54
这里显示读取所有前面行StrLine----->-10

这里显示读取所有前面行StrLine----->13

这里显示读取所有前面行StrLine----->12

这里显示读取所有前面行StrLine----->23

这里显示读取所有前面行StrLine----->4

这里显示读取所有前面行StrLine----->35

这里显示读取所有前面行StrLine----->6

这里显示读取所有前面行StrLine----->70

这里显示读取所有前面行StrLine----->8x

这里显示读取所有前面行StrLine----->9y

StrLine这里读取指定行------->10

其中的txt文件内容为:

-10
13
12
23
4
35
6
70
8x
9y
10
11m
12
133
146
15
-106

参考文献:
https://blog.csdn.net/qq_37668377/article/details/103722766
https://www.cnblogs.com/kissazi2/archive/2012/10/29/2744153.html
https://blog.csdn.net/weixin_41194129/article/details/10880631750

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • AI模型设计:安装C++版本的libtensorflow(1.10~2.6.0)以及TFC++ demo源码的实现
  • 酒店管理(链表和文件操作)
  • AI模型设计:配置C++版本pytorch(libtorch 1.12)开发环境以及demo源码的实现
  • 2004年6月22日
  • ubuntu20.04安装Android Studio
  • C/C++使用技巧(二十二):再谈C/C++多文件编译生成与调用的静态库/动态库[本文所有源码分享]
  • 新的生活今天开始~
  • AI模型设计:完美实现C语言调用python训练的tensorflow2.5-gpu循环神经网络模型并进行预测
  • 2004下半年高级程序员考试大纲(整理版)
  • C/C++语言使用技巧(三十三):强大的数学计算库gsl与算法实现
  • Java学习备忘录(二)基础语法和数组(原创)
  • 完美解决linux编译动态库出现的问题:ERROR: ld.so: object LD_PRELOAD cannot be preloaded: ignored
  • Docker容器和主机互相拷贝传输文件
  • Java学习备忘录(三)类篇(原创)
  • C++使用技巧(二十三):回顾整形转化为字符串
  • 深入了解以太坊
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • GraphQL学习过程应该是这样的
  • js正则,这点儿就够用了
  • leetcode386. Lexicographical Numbers
  • mysql_config not found
  • MySQL数据库运维之数据恢复
  • nodejs:开发并发布一个nodejs包
  • Node项目之评分系统(二)- 数据库设计
  • Promise面试题,控制异步流程
  • 从0到1:PostCSS 插件开发最佳实践
  • 前端学习笔记之观察者模式
  • 前端自动化解决方案
  • 微信小程序实战练习(仿五洲到家微信版)
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #etcd#安装时出错
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (42)STM32——LCD显示屏实验笔记
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (zt)最盛行的警世狂言(爆笑)
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)计算机毕业设计大学生兼职系统
  • (回溯) LeetCode 40. 组合总和II
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (九)c52学习之旅-定时器
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (四)汇编语言——简单程序
  • (转)关于pipe()的详细解析
  • .gitattributes 文件
  • .NET CLR基本术语
  • .NET Core中如何集成RabbitMQ
  • .net mvc 获取url中controller和action
  • .net MySql
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • .NetCore 如何动态路由
  • .NET命名规范和开发约定