C语言使用技巧(三十二):读写txt文件指定行指定所有行类型数据
2023-09-14 09:09:14 时间
实现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
相关文章
- 【Linux】嵌入式开发,在Linux中使用C语言对标准I/O库文件的替换Copy
- C语言中如何检查一个文件是否存在以及权限等信息
- C语言的谜题 原文http://coolshell.cn/articles/945.html
- C语言/C++常见习题问答集锦(六十一) 之N位16进制数
- C语言/C++常见习题问答集锦(二)
- [C语言]进阶|结构类型: 枚举, 结构, 类型定义
- Linux 底下使用C语言的 单链表 ,双链表,二叉树 读取文件,并排序
- ZZNUOJ_C语言1099:角谷猜想(多实例测试)(完整代码)
- ZZNUOJ_C语言1132:数字字符统计(附完整源码)
- C语言入门之指针(2)
- C语言之制作ota文件包(作为参考)
- C语言常用函数-chmod()改变文件访问方式函数
- C语言,如何检查文件是否存在和权限的信息
- C语言使用技巧(十八):while与do---while循环的使用
- C语言实现结构体返回两值或多值:结构体定义函数的类型
- 完美解决C语言gcc编译器不能读取小数数据TXT文件的问题
- C语言使用技巧(二十五):函数参数中设置输出的参数【虽然简单,但是强大】应用布尔类型,判断非!
- C语言编译成功后生成后缀名为.o文件是什么文件?
- C语言进阶-链表
- 1.编写一个简单的C语言程序:根据输入的两个整数求平均值并且在终端输出,通过gcc编译器得到它的汇编程序文件。 2.编写一个C语言程序:打印输出所有“水仙花数”,用gdb调试程序(给出步骤)。所谓“