• 大数据内存模型(二级指针)


    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <Windows.h>
    #include <memory.h>
    #define path "E:\杂乱test\内存大数据模型\1E~001.txt"
    char **g_pp;
    int imax = 8435714;//标识有多少行
    int jmax = 20027;//标识最宽
    
    int getJmax()
    {
    	int width = -1;
    	FILE *pf = fopen(path, "r");//读文件打开路径
    	if (pf == NULL)
    	{
    		printf("文件打开失败");
    	}
    	else
    	{
    		while (!feof(pf))
    		{
    			char readStr[30000] = { 0 };
    
    			fgets(readStr, 30000, pf);//读取一行
    			readStr[29999] = '';//最后为字符串结束
    			int strLength = strlen(readStr);
    
    			if (strLength > width)
    			{
    				width = strLength;
    			}
    		}
    		fclose(pf);//关闭
    	}
    
    	return width;
    }
    
    int getImax()
    {
    	int hang = -1;
    	FILE *pf = fopen(path, "r");//读文件打开路径
    	if (pf == NULL)
    	{
    		hang = -1;
    		printf("文件打开失败");
    	}
    	else
    	{
    		while (!feof(pf))
    		{
    			char readStr[1024] = { 0 };
    
    			fgets(readStr, 1024, pf);//读取一行
    
    			hang++;
    		}
    		fclose(pf);//关闭
    	}
    
    	return hang;
    }
    
    void loadFromFile()
    {
    	g_pp = (char **)malloc(sizeof(char*)*imax);//分配指针数组 多少行
    	memset(g_pp, '', sizeof(char*)*imax);
    	FILE *pf = fopen(path, "r");
    	if(pf == NULL)
    	{
    		printf("文件打开失败");
    		return;
    	}
    	else
    	{
    		for (int i = 0; i < imax;i++)
    		{
    			char str[1024] = { 0 };
    			fgets(str, 1024, pf);//按行读取
    			str[1023] = '';
    			int strLength = strlen(str);
    			if (strLength < 50)
    			{
    				g_pp[i] = malloc(sizeof(char)*(strLength + 1));
    				strcpy(g_pp[i], str);//拷贝到分配的内存
    			}
    		}
    		fclose(pf);
    		printf("载入完成
    ");
    	}
    }
    
    void search(char *str)
    {
    	if (g_pp != NULL)
    	{
    		for (int i = 0; i < imax; i++)
    		{
    			if (g_pp[i] != NULL)
    			{
    
    				char *p = strstr(g_pp[i], str);//找到返回地址,否则返回NULL
    				if (p != NULL)
    				{
    					puts(g_pp[i]);//打印
    				}
    			}
    		}
    	}
    }
    
    void main()
    {
    	loadFromFile();
    	while (1)
    	{
    		char str[100] = { 0 };
    		scanf("%s", str);
    		search(str);//检索
    	}
    
    	system("pause");
    }
    
  • 相关阅读:
    最详细的Vue Hello World应用开发步骤
    SAP Fiori + Vue = ?
    golang--连接redis数据库并进行增删查改
    golang--redis基本介绍
    golang--海量用户即时通讯系统
    (四十六)golang--网络编程(简易的聊天系统)
    动态规划--矿工挖矿
    (四十五)golang--反射
    动态规划--爬楼梯问题(入门)
    (四十四)golang--协程(goroutine)和管道(channel)相结合实例
  • 原文地址:https://www.cnblogs.com/xiaochi/p/5176327.html
Copyright © 2020-2023  润新知