① c语言把文件读取到内存中,并且把文件储存成一个struct
设计一个链表,每读出一行,就是一个学生信息,然后就给链表增加一个学生节点。
这两个结构供参考。
typedef struct student //学生个体的结构体
{
char acName[30]; //姓名
short sScore; //成绩
}STUDENT_S;
在需要顶一个STUDENT_S类型的单链表。
typedef struct student_list_node
{
STUDENT_S stCurStudent; //链表中的当前学生
student_list_node* pstSllNodeNext; //下一个学生
}STUDENT_LIST_NODE;
② C语言中读入一个.txt 的文件,是不是fopen时就已经将内容全部读入内存了
fopen()函数主要做是:
1. 建立一个FILE对象。
2. 根据路径在外存中找到描述文件的对象,并根据所找到的对象的信息初始化FILE对象。
3. 返回FILE对象的指针。
从上可知,调用fopen()函数时,并未将文件的内容读到内存中,而是在文件系统中找到描述该文件的对象,并建立描述该文件的FILE对象。
③ c语言 文件读入什么意思
就是
用fopen或者open(Linux下)打开并使用一些文件流操作函数如fgets之类的对文件进行读取,读入内存。
④ c语言中如何将数据文件读入内存,数据是结构体
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
typedef struct student {
unsigned long No;
char name[10];
unsigned char sex; // 'F' = female,'M' = male
float grades[6]; // [0]:数学,[1]:英语,[2]、物理,[3]、计算机,4]、总成绩,[5]、平均分
struct student *next;
}Stu;
int main() {
int i;
Stu astu;
FILE *fp;
fp = fopen("F:\\VC\\stumsgn.txt","rb");
if(fp == NULL) {
printf("打开输出文件失败。\n");
exit(1);
}
while(fread((char *)&astu,sizeof(Stu),1,fp) == 1) {
printf("%d %s %c ",astu.No,astu.name,astu.sex);
for(i = 0;i < 6;i++) printf("%6.2f ",astu.grades[i]);
printf("\n");
}
fclose(fp);
return 0;
}
⑤ C语言 读取文件到内存
1.文件的大小。
文件大小:该文件所占的存储空间的大小,基本单位为字节B,字节向上分别为KB、MB、GB、TB,每级为前一级的1024倍,比如1KB=1024B,1M=1024KB。
2.是否可以不预先分配内存。
可以不预先分配跟文件大小一致的内存,但是从文件中读出的每一行都要分配一个内存,可以为每一行设定一个固定的内存大小,比如A字节,然后用C语言的malloc函数为该行数据分配内存,读出数据后,判断分配的内存是否够用,如果不够用,可以用C语言的realloc函数对该块内存进行再分配。
malloc函数
malloc的全称是memory allocation,中文叫动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。
void* 类型表示未确定类型的指针。C,C++规定,void* 类型可以通过类型转换强制转换为任何其它类型的指针。
realloc函数
realloc的全程是reset allocation,中文名叫动态内存调整,用于调整一块连续的已分配的内存块区域。
3.数组和struct结构体的建立。
double数组:double a[100];
字符数组:char a[100];
struct结构体:
structst{
double a[100];
char b[100];
};
⑥ C语言从TXT读取到内存的问题
加载配置文件.
[plain] view plain
launchctl load /Library/LaunchDaemons/org.apache.tomcat.plist
launchctl start org.apache.tomcat
⑦ 【C语言】计算文件长度,把文件内容读取到内存中
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
main ()
{
string str;
ifstream f1 ( "1.txt" );
if (f1.fail())
{
cerr<<"open failure on 1.txt"<<endl;
return 1;
}
ifstream f2 ( "2.txt" );
if (f2.fail())
{
cerr<<"open failure on 2.txt"<<endl;
return 1;
}
ofstream out ( "3.txt" );
if (out.fail())
{
cerr<<"open failure on 3.txt"<<endl;
return 1;
}
while ( getline (f1, str))
{
out<<str<<endl;
}
while ( getline (f2,str))
{
out<<str<<endl;
}
f1.close();
f2.close();
out.close ();
return 0;
}
可以参照这个试试
⑧ C语言,读取文件到内存显示错误
主要是你写入文件 和读出的时候 用的是什么语句。
两个必须对应起来,而且不能错
要可以人为读取文件。
那么写入的时候 用fprintf
读取的时候用fscanf
这样效果会好很多
⑨ C语言中fopen函数打开文件后,文件以何种方式读入内存
C语言fopen函数用于打开文件。
函数原型:FILE * fopen(const char * path,const char * mode);
参数:
path 字符串类型,表示文件所在的路径,包括文件名
mode 打开文件的模式、
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。
mode:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
实例:
#include<stdio.h>
#define F_PATH "d:\\myfile\\file.dat"
int main(void)
{
FILE*fp=NULL;//需要注意
fp=fopen(F_PATH,"r");
if(NULL==fp)
{
return -1;//要返回错误代码
}
fclose(fp);
fp=NULL;//需要指向空,否则会指向原打开文件地址
return 0;
}
⑩ 文件在C语言中怎么样把一个.bmp文件读入内存中
以rb模式打开
seek到文件结尾 通过ftell获取文件大小
申请该大小的内存
再定位文件指针到文件开头
以fread读文件所有数据到内存中。
代码:
unsignedchar*load_bmp(constchar*file,int*len)
{
unsignedchar*p;
intl;
FILE*fp;
*len=0;
fp=fopen(file,"rb");
if(fp==NULL)
returnNULL;
fseek(fp,0,SEEK_END);
l=ftell(fp);
rewind(fp);
p=(unsignedchar*)malloc(l);
if(p)
{
fread(p,1,l,fp);
*len=l;
}
fclose(fp);
returnp;
}