日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二级指针读取文件(显示行数、读取、释放内存)

發(fā)布時間:2025/3/12 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二级指针读取文件(显示行数、读取、释放内存) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.讀取的文件

test.txt

2.c代碼

duQu01.c

#include <stdlib.h> #include <stdio.h> #define _CRT_SECURE_NO_WARNINGS int getFileLine(FILE *file)//文件有幾行 {if (file == NULL){printf("Read failed!");return -1;}int num = 0;//讀取的文件存入bufchar buf[1024] = { 0 };while (fgets(buf, 1024, file)!=NULL){num++;//printf("%s", buf);}//指針移到末尾,需要將文件光標置為文件首fseek(file, 0, 0);printf("文件有幾行:%d\n", num);return num;/*int fseek( FILE *stream, long offset, int origin );第一個參數(shù)stream為文件指針第二個參數(shù)offset為偏移量,整數(shù)表示正向偏移,負數(shù)表示負向偏移第三個參數(shù)origin設定從文件的哪里開始偏移,可能取值為:SEEK_CUR、 SEEK_END 或 SEEK_SETSEEK_SET: 文件開頭SEEK_CUR: 當前位置SEEK_END: 文件結尾其中SEEK_SET,SEEK_CUR和SEEK_END和依次為0,1和2.*/ } readFileData(FILE *file,int len,char **pArray) {if (file == NULL){//printf("Read failed!");return -1;}if (len <= 0){printf("長度小于0");}if (pArray == NULL){return -1;}//讀取的文件存入bufchar buf[1024] = { 0 };int index = 0;while (fgets(buf, 1024, file) != NULL){//計算第1行有多少字節(jié),加上\0int currentlen = strlen(buf) + 1;//開辟該行空間char *cp = malloc(sizeof(char)*currentlen);//復制到cpstrcpy(cp, buf);//將數(shù)據(jù)拷貝到堆區(qū)內(nèi)存中pArray[index++] = cp;//釋放緩沖區(qū)memset(buf, 0, 1024);} }//顯示數(shù)據(jù) show(char **pArray, int len) {for (int i = 0; i < len; i++){printf("第%d行是:%s",i+1,pArray[i]);} }//釋放內(nèi)存 freeSpace(char **pArray, int len) {//先釋放小的for (int i = 0; i < len; i++){if (pArray[i] != NULL){free(pArray[i]);pArray[i] = NULL;}}free(pArray);pArray = NULL; }void test01()//測試函數(shù) {//讀取文件FILE *file = NULL;file=fopen("./test.txt", "r");if (file == NULL){printf("Read failed!");//return 0;}//文件有幾行int len = getFileLine(file);//堆區(qū)開辟len個char*空間,二級指針char **pArray = malloc(sizeof(char*)*len);//讀取文件數(shù)據(jù),存入pArrayreadFileData(file, len, pArray);//顯示數(shù)據(jù)show(pArray, len);//釋放內(nèi)存freeSpace(pArray, len);pArray = NULL;//防止野指針 }int main() {test01();system("pause");return 0; }

3.結果顯示

總結

以上是生活随笔為你收集整理的二级指针读取文件(显示行数、读取、释放内存)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。