C语言实现txt数据读入内存/CPU缓存实例详解

摘要

C实现将txt数据读入内存/CPU缓存的函数,不多说,实现如下。

1. 实现代码

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h> 

int filelength(FILE *fp);
char *readfile(char *path); 

int main(void){
  char *string; 

  string=readfile("C:/Users/Joe WANG/Desktop/Data.txt");
  printf("数据读入内存完毕! \n");
  printf("内存中的数据如下:\n%s \n",string);
  system("pause"); 

  return 0;
} 

char *readfile(char *path){
  FILE *fp;
  int length;
  char *ch; 

  if((fp=fopen(path,"r"))==NULL){
    printf("open file %s error.\n",path);
    exit(0);
  }
  length=filelength(fp);
  ch=(char *)malloc(length);
  fread(ch,length,1,fp);
  *(ch+length)='\0'; 

  return ch;
} 

int filelength(FILE *fp){
  int num; 

  fseek(fp,0,SEEK_END);
  num=ftell(fp);
  fseek(fp,0,SEEK_SET); 

  return num;
}

2. Data.txt中的源数据

3. 测试结果

(0)

相关推荐

  • 详解C语言中的字符串拼接(堆与栈)

    首先来看一个demo: int do_sth(int type) { char *errstr; switch(type) { case 1: errstr = "Error";break case 2: errstr = "Warn";break case 3: errstr = "Info";break case 4: errstr = "Debug";break default: return 0; } if (...)

  • C语言基础 原码、反码、补码和移码详解

     原码.反码.补码.移码的作用? 在计算机内,机器数有无符号和带符号数之分.无符号数表示正数,在机器数中没有符号位.位于无符号数,若约定小数点的位置在机器数的最低位之后,则是纯整数:若约定小数点的位置在机器数的最高位之前,则是纯小数.对于带符号数,机器数的最高位是表示正.负的符号位,其余位则表示数值.若约定小数点的位置在机器数的最低数值位之后,则是纯整数:若约定小数点的位置在机器数的最高数值位之前(符号位之后),则是纯小数. 为了便于运算,带符号位的机器数可采用原码.反码和补码等不同的编码方法,

  • C语言行优先和列优先的问题深入分析

    C语言行优先和列优先的问题深入分析 摘要 本文主要探讨的是"行优先"原则和"列优先"原则的问题. 1. 背景 首先了解"行优先"和"列优先"的知识,这两种方式在数学上的直观描述如下,给定如下矩阵: 根据行优先的原则,其排序方式为 根据列优先的原则,其排序方式为 2. 计算机领域的应用 行列优先原则在计算机领域的应用主要如下.行优先或者列优先没有好坏,但其直接涉及到对内存中数据的最佳存储访问方式.因为在内存使用上,程序访问的内存

  • linux C语言开发管道通信实例详解

    linux C语言开发管道通信 Linux系统本身为进程间通信提供了很多的方式,比如说管道.共享内存.socket通信等.管道的使用十分简单,在创建了匿名管道之后,我们只需要从一个管道发送数据,再从另外一个管道接受数据即可. #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h> int pipe_default[2]; int main() { pid_t

  • C语言中十六进制转十进制两种实现方法

    C语言 · 十六进制转十进制 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英文字母A.B.C.D.E.F表示. 样例输入 FFFF 样例输出 65535 思路:感觉自己的下面两个方法都对,但是···不说了[狡诈]... 方案一: #include<stdio.h> #include<math.h> #include<string.h> int main(){ char s[50]; s

  • Species Tree 利用HashTable实现实例代码

    Species Tree 利用HashTable实现 题目再现 题目内容: 给定一个物种演化图, 关系的表示方式如下: x y : 表示x为y的先祖. 一个物种只会有一个先祖, 一个先祖可以有很多个演化出来的物种, 请你找出每个问题询问物种的祖父物种(先祖的先祖), 每个物种会使用一个不重复的编号来表示, 如果该物种没有祖父物种的话或是不存在, 那么请将他的祖父物种当是0.(凭空而生) 保证所有物种间一定有所关连, 且不会有重复演化的现象发生, 即演化图只会是一棵树. 输入格式: 只有一组测资.

  • C语言 坐标移动详解及实例代码

    题目描述 开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动.从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面. 输入: 合法坐标为A(或者D或者W或者S) + 数字(两位以内) 坐标之间以;分隔. 非法坐标点需要进行丢弃.如AA10;  A1A;  $%$;  YAD; 等. 下面是一个简单的例子 如: A10;S20;W10;D30;X;A1A;B10A11;;A10; 处理过程: 起点(0,0) + A10 = (

  • C语言 MD5的源码实例详解

    C语言 MD5源码 md5c.h: /* POINTER defines a generic pointer type */ typedef unsigned char * POINTER; /* UINT2 defines a two byte word */ //typedef unsigned short int UINT2; /* UINT4 defines a four byte word */ typedef unsigned long int UINT4; /* MD5 conte

  • C语言实现txt数据读入内存/CPU缓存实例详解

    摘要 C实现将txt数据读入内存/CPU缓存的函数,不多说,实现如下. 1. 实现代码 #include "stdafx.h" #include <stdio.h> #include <stdlib.h> int filelength(FILE *fp); char *readfile(char *path); int main(void){ char *string; string=readfile("C:/Users/Joe WANG/Deskto

  • C语言编程数据在内存中的存储详解

    目录 变量在计算机中有三种表示方式,原码反码,补码 原码 反码 补码 总结一下 浮点数在内存的储存 C语言中,有几种基本内置类型. int unsigned int signed int char unsigned char signed char long unsigned long signed long float double 在内存中创建变量,会在内存中开辟空间,并为其赋值. int a=10; 在计算机中,所有数据都是以二进制的形式存储在内存中. 变量在计算机中有三种表示方式,原码反

  • Spark中的数据读取保存和累加器实例详解

    目录 数据读取与保存 Text文件 Sequence文件 Object对象文件 累加器 累加器概念 系统累加器 数据读取与保存 Text文件 对于 Text文件的读取和保存 ,其语法和实现是最简单的,因此我只是简单叙述一下这部分相关知识点,大家可以结合demo具体分析记忆. 1)基本语法 (1)数据读取:textFile(String) (2)数据保存:saveAsTextFile(String) 2)实现代码demo如下: object Operate_Text { def main(args

  • oracle数据匹配merge into的实例详解

    oracle数据匹配merge into的实例详解 前言: 很久之前,估计在2010年左右在使用Oralce,当时有个需求就是需要对两个表的数据进行匹配,这两个表的数据结构一致,一个是正式表,一个是临时表,这两表数据量还算是比较大几百M.业务需求是用临时表中的数据和正式表的匹配,所有字段都需要一一匹配,而且两表还没有主键,这是一个比较麻烦和糟糕的事情. 场景: 1.如果两表所有字段值都一致则不处理: 2.如果有部分字段不一致则更新: 3.如果正式表中数据在临时表中不存在,则需要删除: 满足上面场

  • mybatis实现对数据的增删查改实例详解

    前期准备 新建java工程或java wweb工程,需要导入以下的包, 基本工作已经完成,接下来开始进入正题. 新建实体类 新建与数据库表对应的实体类 package com.edu.hpu.domain; /** * @author Administrator *user表所对应的实体类 */ public class User { //实体类的属性和表的字段名称一一对应 private int id; private String name; private int age; //对属性进行

  • 对dataframe数据之间求补集的实例详解

    python的pandas库,对于dataframe数据,有merge命令可以完成dataframe数据之间的求取交集并集等命令. 若存在df1与df2 ,他们的交集df3=pd.merge(df1,df2,on=[.....]).但是又想通过df3求df3与df1的补集时发现没有该命令. 求df3(子集)与df1补集: #x为子集 def Complement(x,y): import numpy as np array1 = np.array(x) list1=array1.tolist()

  • Python数据可视化:幂律分布实例详解

    1.公式推导 对幂律分布公式: 对公式两边同时取以10为底的对数: 所以对于幂律公式,对X,Y取对数后,在坐标轴上为线性方程. 2.可视化 从图形上来说,幂律分布及其拟合效果: 对X轴与Y轴取以10为底的对数.效果上就是X轴上1与10,与10与100的距离是一样的. 对XY取双对数后,坐标轴上点可以很好用直线拟合.所以,判定数据是否符合幂律分布,只需要对XY取双对数,判断能否用一个直线很好拟合就行.常见的直线拟合效果评估标准有拟合误差平方和.R平方. 3.代码实现 #!/usr/bin/env

  • 关于C语言中数据在内存中的存储详解

    前言 1. 数据类型详细介绍 2. 整形在内存中的存储:原码.反码.补码 3. 大小端字节序介绍及判断 4. 浮点型在内存中的存储解析 一.数据类型介绍 1.类型的基本归类 1.整形家族 char unsigned char signed char short unsigned short [int] signed short [int] int unsigned int signed int long unsigned long [int] signed long [int] 2.浮点型家族

  • uni-app网络请求、数据缓存实例详解

    目录 一.网络请求 1.配置请求 1.1 发送get请求 1.2 发送POST请求 二.数据缓存 1.uni.setStorage(OBJECT) 2.uni.setStorageSync(KEY,DATA) 3.uni.getStorage(OBJECT) 4.uni.getStorageSync(KEY) 5.uni.removeStorage(OBJECT) 总结 一.网络请求 在uni中可以调用uni.request方法进行请求网络请求 需要注意的是:在小程序中网络相关的 API 在使用

  • C语言数据在内存中的存储详解

    目录 文章摘要 一.C语言的数据类型 数据类型基本分为: 二.隐式类型转换 1.什么是隐式类型转换 2.整型提升 3.类型转换 三.机器大小端 1.什么是大小端 2.大小端在截断的应用 3.判断当前机器的字节序是大端还是小端 四.整型在内存中的存储 1.原码.反码.补码 2.举例实践整型数据在内存的存储 总结 文章摘要 本文通过内存底层原理,帮你透彻了解数据存储进内存与从内存中读取的区别以及不同数据类型下数据计算.赋值的变化情况 要透彻理解这些,必须知道隐式类型转换以及机器大小端的概念,本文会对

随机推荐