该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

很多朋友都用惯了高级语言的字符串变量,就是定义一个字符串变量,直接可以赋值,但在C语言里没有字符串变量这样的概念,只有字符数组,因此,只能定义一个固定数组,或用malloc动态分配一个固定的空间,但始终都受固定的限制,很多人都在思索,到底可以实现像String变量一样动态输入字符串吗?昨晚给一个朋友回答用:malloc( 常量 )还是觉得不够爽,思索了一阵,写出了这个真正实现无长度限制字符串输入函数,特和各位分享!

函数原型:getStr()

返回值:字符数组指针(输入的字符数组首地址)

具体用法如下:

#include "stdio.h"

#include "conio.h"

char *getStr()

{

char ch='\0';

char *str="";

long i=0;

int keyflushSize = 10;  /*缓冲区大小*/

while((ch=getche())!='\r')

{

if( !strlen(str)%keyflushSize )

{

str = strcpy((char*)malloc(strlen(str)+keyflushSize),str);

}

if( ch!='\b' )

{

str[i]=ch;

str[++i]='\0';

}

else if( i>0 )

{

str[--i]='\0';

putch(' ');

putch('\b');

}

rewind(stdin);    /*清空键盘缓冲区里的无用字符*/

}

return str;

}

main()

{

char *str;

str = getStr();

puts("\n\n\n Auto length String:");

puts(str);

getch();

}

c语言申请字符串动态,【分享】C语言动态长度字符串相关推荐

  1. python创建字符串数组_如何创建任意长度字符串的numpy数组?

    您可以通过创建一个dtype=object数组来执行此操作.如果尝试将长字符串分配给普通numpy数组,它将截断该字符串:>>> a = numpy.array(['apples', ...

  2. python加密,实现字符串加密,生成唯一固定长度字符串

    应用场景: 1.cache存储,以query的参数为key,存储一天有效期的结果:(query的参数往往很多,字符串很长,不可直接存储) 2.数据的增量更新(爬虫等等) 背景 有时候爬虫爬过的url需 ...

  3. 飞秋的不定长度字符串处理方法

    主要用来处理不定长度字符串,飞秋的不定长度字符串处理方法: #define XString_LENGTH 1024 // 默认缓存区的长度 class XString {  char *m_x;  u ...

  4. C语言程序设计 | 动态内存管理:动态内存函数介绍,常见的动态内存错误,柔性数组

    动态内存管理目录: 动态内存函数的介绍 常见的动态内存函数的错误 柔性数组 为什么会有动态内存管理呢 我们在日常使用中,创建一个数组,一个变量时都会开辟空间 如: int a; //在栈上开辟一个四字 ...

  5. c语言字符串怎么退位,C语言第五六次作业.ppt

    C语言作业解析 第四弹 原来真正变态的是这两作业哇 原本是做完第五次作业等大家数分期中考完以后给大家 结果直接出了第六次 就顺便做了 买一送一还包邮哦亲 虽然这两次作业比较难 理解起来困难无比 不过考 ...

  6. c 语言定义2维字符串数组赋值,二维数组赋值字符串 c 语言 二维字符串数组赋值问题...

    C语言中二维字符数组应该怎样赋值? c语言二维数组如何定义字符串????急... 二维字符数组的定义格式为:char 数组名[第一维大小][第二维大小]; 例如:char c[3][10]; //定义 ...

  7. 【C语言进阶学习笔记】五、动态内存分配(爆肝吐血力作,强烈建议收藏!!!)

    前言 现代计算机基本都是基于冯诺伊曼结构体系设计出来的,冯诺伊曼结构体系的核心就是"存储程序",将程序(指令集)和数据以同等地位存储在内存中.但是我们的内存空间并不是无限大的,所以 ...

  8. 【C++ 语言】C++字符串 ( string 类 | 创建方法 | 控制台输出 | 字符串操作 | 栈内存字符串对象 | string* )

    文章目录 C++ 字符串 对象 C++ 字符串 对象 创建方法 C++ 字符串 对象 输出到控制台 C++ 字符串 拼接 C++ 字符串 方法调用 ( 栈内存对象 ) C++ 字符串 方法调用 ( 堆 ...

  9. c语言字符串加减_C语言中指针的介绍

    C语言中指针的介绍 指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构:能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编 ...

  10. go语言 不支持动态加载_动态语言支持

    go语言 不支持动态加载 本文是我们名为" 高级Java "的学院课程的一部分. 本课程旨在帮助您最有效地使用Java. 它讨论了高级主题,包括对象创建,并发,序列化,反射等. 它 ...

最新文章

  1. 英特尔2022年投资者大会:公布技术路线图及重要节点
  2. 16年前卖猪肉的北大高材生如今怎么样了?
  3. python语言自学-为什么建议大家都学习Python语言?原因在这
  4. Redis的系统级命令
  5. STM32F103的PC13、PB3和PB4定义为普通IO口使用
  6. 142. Leetcode 93. 复原 IP 地址 (回溯算法-切割问题)
  7. ffplay.c学习-5-视频输出和尺⼨变换
  8. 设置easyui input默认值
  9. 《模式识别》自学笔记——(三)统计决策
  10. 稀缺高品质静物场景空间海报|艺术拍摄
  11. linux 下安装ecos开发环境,Ubuntu 10.04中安装eCos 3.0
  12. 【JAVA程序设计】(C00028)基于ssm的校园二手交易平台
  13. git将本地文件push到阿里云Code:出现Permission denied (publickey)错误
  14. java pfx加密_.pfx证书 .cer证书MD5withRSA加密
  15. 精选大数据面试真题10道(附答案详细解析)
  16. 戴尔硬件服务器,服务器硬件、结构介绍_Intel Xeon E5-2660 v4_服务器x86服务器-中关村在线...
  17. 面试了一个 46 岁的程序员,思绪万千
  18. 领域驱动设计-领域建模
  19. warning: could not load any Objective-C class information. This will significantly reduce the qualit
  20. 跨境电商要讲好年轻人的“新故事”

热门文章

  1. mysql受影响的行: 0_mysql执行update语句受影响行数是0
  2. HTML5怎么让图片和文字重叠,利用HTML5实现全屏图片文字过渡切换特效
  3. 静态路由_在Android中模拟静态方法:让我们总结一下
  4. 数据结构乐智教学百度云_网易云课堂 - 我的职业课堂
  5. r720支持多少频率的内存吗_关于内存频率,高频和低频的性能差距大吗?明白这3点很重要...
  6. 详解阿里开源分布式事务框架Seata
  7. 警告:攻击者利用 SonarQube 漏洞盗取国内多个机构的大量源码!
  8. 2020 年 Java 面试常见 350 题
  9. 自律到极致-人生才精致:第11期
  10. 微信小游戏「跳一跳」技术手段高分秘籍实现