C语言怎么实现可变长度字符串

比如C# 写了个配置文件 不管多长都声明一个string变量用StreamReader下的方法载入进入
貌似C语言没这样的懒方法 那该怎么做呢

C语言实现可变长度字符串,主要依靠realloc函数实现,主要代码如下,
//程序功能,判断插入字符长度len,若大于预设大小n,调整字符串数组大小,实现动态处理数组大小。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
char * pstr = NULL;
int n=10;//字符串初始大小
char str[100];//待插入字符串
int len=0;//待插入字符串长度
pstr = (char*)malloc(sizeof(char)*n);//申请sizeof(char)*n个大小的内存空间
if (pstr==NULL)
{
printf("内存申请出错,程序退出!\n");
exit(1);
}
memset(pstr,'\0',sizeof(char)*n);//初始化内存空间
printf("输入待插入字符串:\n");
gets(str);
len=strlen(str)+1;
printf("内存申请出错,程序退出!%d\n",len);
if(len>n)//字符串长度大于初始大小n,重新申请内存空间
pstr=(char *)realloc(pstr,sizeof(char)*len);//重新申请内存空间
strcat(pstr,str);//将插入字符串连接给pstr
puts(pstr);
if (pstr==NULL)//清理申请内存
{
free(pstr);
pstr=NULL;
}

return 0;
}

void *realloc( void *ptr, size_t size );函数将ptr指向的储存空间改变为给定的大小size。 参数size可以是任意大小,大于或小于原尺寸(需要注意的是原始数据会丢失)都可以。返回值是指向新空间的指针,如果错误发生返回NULL。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-07
char * p = (char*)malloc(sizeof(char)*n)

别忘了free


C++和C#的string类型在最低层实际也是利用类似方法去做的


另外有一种

char str[SIZE_MAX]

也有人喜欢用

realloc函数

只是不太推荐,主要原因是以前系统上这个函数操作会出问题,因为内存的原因

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网