zoukankan      html  css  js  c++  java
  • C基础学习笔记——01-C基础第15天(快 yi通)

    在学习C基础总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。

    01-C基础第15天(快 yi通)

    练习:查找单词记录单词翻译

    程序分析

    一、读取文件中的单词
    1、打开文件判断文件可用性
    2、创建构体struct dict {char * word,char* trans}结构体需要开辟堆空间
    3、读取文件内容开辟堆空间,存放在堆空间中文件行数/2=获取单词个数两行算作一个单词
    4、关闭文件

    二、查找单词
    1、通过键盘获取单词
    2、通过循环查找单词记录单词翻译
    3、退出死循环

    三、释放堆空间
    1、释放单词和翻译
    2、释放结构体堆空间
    索引:struct index{ char flag,int start,int end}flag=a      36
    for(int i=index.start;i<index.end;i++)
    {
    }

    dict.c代码如下:

      1 #define _CRT_SECURE_NO_WARNINGS
      2 #include "dict.h"
      3 
      4 
      5 
      6 ////全局变量
      7 //dic * p;
      8 
      9 //1、打开文件 存储数据
     10 void ReadFile(dic ** p)
     11 {
     12     //开辟堆空间
     13     //*p = (dic*)malloc(sizeof(dic)*WORDMAX);//  realloc()  链表
     14     *p = (dic*)malloc(sizeof(dic)* WORDMAX);
     15 
     16     //读取文件内容
     17     FILE * fp = fopen("D:\dict.txt", "r");
     18     if (!fp)
     19         return -1;
     20     int i = 0;
     21     char buf[1024];
     22     while (!feof(fp))
     23     {
     24         memset(buf, 0, 1024);
     25         fgets(buf, 1024, fp);
     26 
     27         //格式化操作
     28         //buf[strlen(buf) - 1] = '';
     29         for (int i = strlen(buf); i > 0; i--)
     30         {
     31             if (buf[i] == '
    ')
     32             {
     33                 buf[i] = '';
     34                 break;
     35             }
     36         }
     37 
     38 
     39         //开辟堆空间
     40         (*p+i)->word = (char *)malloc(strlen(buf) + 1);
     41         memset((*p + i)->word, 0, strlen(buf) + 1);
     42         strcpy((*p + i)->word, &buf[1]);//#abc
    
     43 
     44         memset(buf, 0, 1024);
     45         fgets(buf, 1024, fp);
     46         (*p + i)->trans = (char*)malloc(strlen(buf) + 1);
     47         memset((*p + i)->trans, 0, strlen(buf) + 1);
     48         strcpy((*p + i)->trans, buf);
     49         i++;
     50     }
     51 
     52 
     53     fclose(fp);
     54 }
     55 
     56 //2、文件查找
     57 //ch 输入单词
     58 //content 单词对应的翻译
     59 int SearchWord(char * ch, char * content, dic *p)
     60 {
     61     memset(content, 0, 1024);
     62     for (int i = 0; i < WORDMAX; i++)
     63     {
     64         if (!strcmp(ch, p[i].word))
     65         {
     66             printf("%s
    ", p[i].trans); 
     67             return 1;
     68         }
     69     }
     70     return 0;
     71 }
     72 
     73 //3、释放
     74 void clear(dic * p)
     75 {
     76     for (int i = 0; i < WORDMAX; i++)
     77     {
     78         free(p[i].word);
     79         free(p[i].trans);
     80     }
     81     free(p);
     82 }
     83 
     84 int main()
     85 {
     86     dic * p;
     87     //读取文件
     88     ReadFile(&p);
     89 
     90 
     91     //单词翻译:
     92     char content[1024];
     93 
     94     char ch[1024];
     95 
     96     while (1)
     97     {
     98         //fgets(ch, 1024, stdin);
     99         gets(ch);
    100 
    101         if (!strncmp("comm=exit", ch,9))
    102         {
    103             break;
    104         }
    105         //结果判断
    106         int flag = SearchWord(ch, content, p);
    107         if (flag)
    108             printf("%s
    ", content);
    109         else
    110             printf("未找到该单词的解释!
    ");
    111     }
    112 
    113     //释放堆空间
    114     clear(p);
    115 
    116     return EXIT_SUCCESS;
    117 }

    dict.h如下:

     1 #pragma once
     2 #include<stdio.h>
     3 #include<string.h>
     4 #include<stdlib.h>
     5 #define WORDMAX 111104
     6 
     7 
     8 struct dicts
     9 {
    10     char * word;
    11     char * trans;
    12 };
    13 typedef struct dicts dic;
    14 
    15 void ReadFile(dic ** p);
    16 int SearchWord(char * ch, char * content, dic * p);
    17 void clear(dic *p);

    在学习C基础总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。

  • 相关阅读:
    关于缓存技术
    很好的C程序
    静态变量和非静态变量
    关于系统
    数据存储
    access判断查询的结果是否为空,等同于SQL ISNULL()
    Access数据库常用函数大全
    MM 常用表
    SAP AFS BAPI 不允许业务对象 BUS2032 和销售凭证类别 H 的组合
    ABAP 语言特色
  • 原文地址:https://www.cnblogs.com/Alliswell-WP/p/C_BasicLearning_15.html
Copyright © 2011-2022 走看看