c语言动态分配字符串数组,【分享】C语言动态长度字符串

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

很多朋友都用惯了高级语言的字符串变量,就是定义一个字符串变量,直接可以赋值,但在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();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值