C 常用的输入输出 栈 哈希 文件写读 实现 字符串处理

时间:2021-09-03 03:28:40

#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>  //引用动态分配数组的malloc

typedef struct stack
{
 int top;
 char str[10] ;
 stack * next;
}SqStack;

SqStack *  InitStack()
{
    SqStack * ret = NULL;
 ret = (SqStack*)malloc(sizeof(SqStack));
 if (ret)
 {
  /*将栈的长度初始化为0*/
  ret -> top = 0;
 }
 return ret;
}

typedef struct HashNode
{
   char data[20];
   int count;
   HashNode * next;
};

//哈希表
HashNode HashTable[100];
// 最简单hash函数  `
int hash_function( char const *p) 

    int value = 0; 
    while (*p != '/0') 
    { 
        value = value * 31 + *p++; 
        value = value % 100; 
    } 
    return value; 

//hash增加节点,对冲突使用链地址法解决
// 添加单词到hash表 
void append_word(char const *str) 
{
int index=hash_function(str);
HashNode hn = HashTable[index];
while(hn != NULL)
{
  if(strcmp(str,hn.data)==0)
  {
     hn.count++;
     return;
  }
  hn=hn.next;
}
  //新建一个节点
  HashNode nhn=new HashNode;
  nhn.count=1;
  nhn.data=new char[strlen(str)+1];
  nhn.next=HashTable[index];
 
  HashTable[index]=nhn;
}

int main()
{
 //哈希表

char * str_hs="213";
 append_word(str_hs);

//new malloc 不同 
 //malloc 和 new 至少有两个不同: new 返回指定类型的指针,并且可以自动计算所需要大小;new 自动进行初始化,malloc是随机的;new 是关键字,malloc不是;
 //malloc 释放需要判断释放null,new则不需要

SqStack* ss1=new SqStack;
 delete(ss1);

SqStack* ss2=(SqStack*)malloc(sizeof(SqStack));
 free(ss2);

//栈实现
 SqStack * ss;
 ss=InitStack();

//字符串处理
 
   //长度 返回值是字符串s的长度。不包括结束符'/0'。一个汉字占两个字节
 char * str1="12 e43字";//print 8
 int len= strlen(str1);
 printf("%d",len);

char * str_1="1232";
 char * str_2="2313";
 int boolValue=strcmp(str_1,str_2);//0为相同
 getchar();

//写文件,覆盖写
 FILE * fp_w=fopen("b.txt","w");
 FILE * fp_r2=fopen("a.txt","r");
 char tmp3[15];
 int tmp4;
 while(fscanf(fp_r2,"%s %d",tmp3,&tmp4)!=EOF)
 {
   fprintf(fp_w,"%s %d\n",tmp3,tmp4);
 }
 fclose(fp_r2);
 fclose(fp_w);

//读文件
 FILE * fp_r=fopen("a.txt","r");
 char tmp1[15];
 int tmp2;
 while(fscanf(fp_r,"%s %d",tmp1,&tmp2)!=EOF)
 {
   printf("%s",tmp1);
   printf("%d\n",tmp2);
 }
 fclose(fp_r);

//输入
   getchar();
   char str[10];
   scanf("%s",str);//遇空格结束
   gets(str);//包含空格
  
   //输出
   printf("%s",str);
   puts(str);
   getchar();

return 0;

}

C 常用的输入输出 栈 哈希 文件写读 实现 字符串处理的更多相关文章

  1. Java常用的输入输出方法

    对于经常上机刷题的来说,首先得解决输入输出方法,Java的输入输出流在Java学习过程的后面部分才会接触,但是我们可以掌握一些简单的,常用的输入输出方法 首先输出 大家最熟悉的莫过于输出方法,直接用S ...

  2. C&num;中常用的几种读取XML文件的方法

    1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/

  3. Python 全栈开发八 文件处理

    一.基本流程 打开文件得到文件句柄 将文件句柄赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 二.基本操作 1.文件句柄 f = open("a.txt",encoding= ...

  4. linux下常用FTP命令 上传下载文件【转】

    1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...

  5. 八&period; 输入输出&lpar;IO&rpar;操作6&period;文件与目录管理

    目录是管理文件的特殊机制,同类文件保存在同一个目录下不仅可以简化文件管理,而且还可以提高工作效率.Java 语言在 java.io 包中定义了一个 File 类专门用来管理磁盘文件和目录. 每个 Fi ...

  6. opencv 3 core组件进阶&lpar;3 离散傅里叶变换;输入输出XML和YAML文件)

    离散傅里叶变换 #include "opencv2/core/core.hpp" #include "opencv2/imgproc/imgproc.hpp" ...

  7. Linux操作系统常用命令合集——第一篇-文件和目录操作(40个命令)

    一.选项和参数的区别        在经过上一次的系统安装后我们已经成功登陆,登陆LInux后,我们就可以在#或$符后面去输入命令,有的时候命令后面还会跟着“选项”(英文名:options)或“参数” ...

  8. Python全栈之路----文件处理

    文件操作分为读.写.修改,我们先从读开始 f = open(file = 'D:/工作日常/ABCD.txt',mode = 'r',encoding = 'utf-8') #file 是文件路径 m ...

  9. java输入输出 -- java NIO之文件通道

    一.简介 通道是 Java NIO 的核心内容之一,在使用上,通道需和缓存类(ByteBuffer)配合完成读写等操作.与传统的流式 IO 中数据单向流动不同,通道中的数据可以双向流动.通道既可以读, ...

随机推荐

  1. AngularJS基础知识2

    一.angularJS双向数据绑定 利用双向数据绑定,不仅能把数据模型的变化同步到视图上面,还可以利用双向数据绑定的特性来做一些样式上面的控制. 双向数据绑定用处很多,不仅仅是像知识点1中的那个例子, ...

  2. 1-File类的使用

    package com.io; import java.io.File; import java.io.FileInputStream; import java.io.IOException; imp ...

  3. javascript中重要概念-闭包-深入理解

    在上次的分享中javascript--函数参数与闭包--详解,对闭包的解释不够深入.本人经过一段时间的学习,对闭包的概念又有了新的理解.于是便把学习的过程整理成文章,一是为了加深自己闭包的理解,二是给 ...

  4. gcc 生成动态库时-fpic选项是什么意思。

    -f后面跟一些编译选项,PIC是其中一种,表示生成位置无关代码(Position Independent Code)

  5. struts2中方法拦截器&lpar;Interceptor&rpar;的中的excludeMethods与includeMethods的理解

    http://www.cnblogs.com/langtianya/archive/2013/04/10/3012205.html

  6. GExpert 1&period;38 实验版含经典代码格式工具 Berlin 编译版

    安装方法:修改install.reg,然后导入.源代码地址:http://blog.dummzeuch.de/experimental-gexperts-version/ http://bbs.2cc ...

  7. java常见的输入和输出流案例研究(一个)

    字节输入和输出流 1.FileInputStream[文件字节输入流]->读取文件内容 用途:从文件系统中的文件获得输入字节.经常使用于读取图像.声音等原始字节流,读取字符流可考虑使用FileR ...

  8. android 5&period;0 -- Palette

    Palette用来从图片资源中获取颜色内容. 下面是个对颜色值使用的工具类: public class PaletteUtils { public static int getColorWithDef ...

  9. MYSQL超时连接问题&lpar;com&period;mysql&period;jdbc&period;MysqlIO&period;readFully&rpar;

    应用服务器连接mysql,有时候会出现以下异常: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.jav ...

  10. String 操作

    String nbbms ="col_1_1_1_1,col_2_2_2_@,"; @ 实现将最后一个逗号去掉:从第一个字符串到最后一个逗号之前的字符串截取[java] Strin ...