文件管理 · 2022年7月25日

c获取文件内容|C语言中读取txt文件内容

㈠ C语言中读取txt文件内容

楼主朋友,你的程序中的问题出在分配空间不足上。比如当你想让a[j]指向某段内存时,用的是 a[j]=(char *)malloc(sizeof(char)); 而到了后面你是要在这段内存中存入一个字符串的,所以就发生了越界。下面是我根据你的代码片段写的一个测试程序,经过修改应该没问题了。#include <stdio.h>#include <stdlib.h>int main (void){ char path[]="12345.txt"; FILE *create; if((create=fopen(path,"r"))!=NULL) { int j; char **a; a=(char **)malloc(100*sizeof(char*)); //此处如果只申请一个char *大小的空间时, //你以后的a[j]往哪里放?此处的100是假设你的文件中有100行信息。如果超过100还得多分配 for (j=0;;j++) { a[j]=(char *)malloc(10000*sizeof(char)); //此处只申请一个字符的空间,后面读取 //长度为10000的字符串就没地方存放了 fgets(a[j],10000,create); printf("%s",a[j]); //测试读取是否成功,将文件中信息显示到屏幕上 if(feof(create)!=0) { for(;j=0;j–) free(a[j]); break; } } free(a); } else printf("Fail to open the file.\n"); fclose(create); printf("\n");}

㈡ C语言:读取文件中内容

写函数:open()write()close()读函数:open()read()close()程序就是这样,具体细节还需要自己去写。祝你好运

㈢ C语言获取文件里面并输出内容

从文件内容读入和输出可以使用fscanf、fprintf。如:fscanf(fp, "%d", &num); //从文件fp读入一个整数到num变量;fprintf(fp, "%d", num); //将num变量的值输出到文件fp;屏幕也可以看作一个文件流,输入是stdin,输出是stdout,如输出到屏幕,就是:fprintf(stdout, "%d", num);

㈣ c语言 怎么从文件中读取指定内容

哥哥我想出的办法是这样的:因为兄弟文件格式是一行一行的, 且每行开头是一个关键字,然后后面是相应数据, 所以哥哥是这么想的, 比如要读"AB2345"这个关键字对应行的内容, 那首先用变量或者宏定义定义下来, 然后从文件开头开始, 一个字符一个字符的扫描, 对每一行的开始的6个字符组成的关键字读出来跟"AB2345"这个关键字比较, 判断是否是想要读取的, 如果是, 那么通过ftell, fseek 两个函数分别得出当前指针的位置和适当移动指针的位置, 最后读取相应内容输出来!详细代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>#define BUF_SIZE 1024#define KEY "AB2345"#define KEY_LEN 7int main(){ int ch = 0; int first = 1;//开始时的标志,因为是一个字符一个字符的扫描 int flag = 0;//文件开头是不是所要读内容的标志 int count = 0;//遇到'\n'的个数 int pre_pos = 0, cur_pos = 0;//前一次和当前文件指针的位置 char buf[BUF_SIZE] = {0}; FILE *fp = NULL; fp = fopen("test.txt", "r"); if (fp == NULL) { printf("Cann't open the file!\n"); exit(1); } else { while ((ch = fgetc(fp)) != EOF) { if (first) { //若要读取的内容在文件开头就有时 //移动指针到文件开头 fseek(fp, -1L, SEEK_CUR); fgets(buf, KEY_LEN, fp); if (strcmp(buf, KEY) == 0) { first = 0; flag = 1; continue; } else { first = 0; } } if (ch == '\n') { count++;//遇到'\n'的个数 pre_pos = cur_pos;//上次遇到'\n'时文件指针的位置 cur_pos = ftell(fp);//当前遇到'\n'时文件指针的位置 //文件开头内容符合要求的就适当移动指针位置 //然后读取输出来 if (count == 1 && flag == 1) { fseek(fp, 0L, SEEK_SET); memset(buf, 0, sizeof(buf)); fgets(buf, cur_pos – 1, fp); printf("%s\n", buf); } //之后内容符合要求的就适当移动指针位置 //然后读取输出来 else { memset(buf, 0, sizeof(buf)); fgets(buf, KEY_LEN, fp); if (strcmp(buf, KEY) == 0) { fseek(fp, (-1) * (KEY_LEN – 1), SEEK_CUR); memset(buf, 0, sizeof(buf)); fgets(buf, cur_pos-1-pre_pos, fp); printf("%s\n", buf); } } } } } fclose(fp); return 0;}

㈤ 读取文件内容 c语言

#include<stdio.h>int main(void){ char fileName[80], line[80]; int linenum = 0, i = 0; FILE * fp; gets(fileName); scanf("%d", &linenum); fp = fopen(fileName, "r"); if (!fp) { printf("File Name Error.\n"); return 0; } for(i = 0; i < linenum; i++) { if (feof(fp)) { fclose(fp); printf("Line No Error.\n"); return 0; } fgets(line, 80, fp); if (i == linenum – 1) printf(line); } fclose(fp); return 0;}

㈥ c语言中读取txt文件内容

如果下面的代码是你的话,链表的长度返回1是正常的,因为你的链表项数据只有一个字符呀!

㈦ c中如何读取其它文件内容

改为fp=fopen("canshu.h","rb"))==NULL) fread(&a,sizeof(int),1,fp); 改为 fscanf(fp," int x=%d",&a);

㈧ C语言读取文件内容的程序

感觉你贴出来的代码跟题目要求差距有点大啊

代码(ps:这里输入的文件名就是一个相对路径,所以给定的测试文本要放在本程序同目录下):

#include<stdio.h>#include<stdlib.h>voidmain(){FILE*fp;charfilename[30],temp[1024];intcount,i,flag=1;printf("请输入文件名:");gets(filename);if((fp=fopen(filename,"r"))==NULL)//文件不存在{printf("FileNameError
");exit(0);}else//文件存在{printf("请选择行数:");scanf("%d",&count);for(i=1;i<=count;i++){if(fgets(temp,1024,fp)==NULL)//不存在第count行{flag=0;break;}}if(flag==0)printf("LineNoError
");elseprintf("第%d行是:%s",count,temp);//打印第count行}fclose(fp);}

测试文本内容:

㈨ C语言读取txt文件内容

#include<stdio.h>#include<stdlib.h>intmain(){ FILE*file; char*data; intfileSize;//打开文件“D:a.txt” file=fopen("D:\a.txt","r");//获得文件大小 fseek(file,0,SEEK_END); fileSize=ftell(file); fseek(file,0,SEEK_SET);//分配内存 data=(char*)malloc(fileSize+1);//读取文件 fread(data,sizeof(char),fileSize,file); data[fileSize]=0;//输出内容(你想对内容干什么都可以了) printf("%s",data); return0;}