c语言函数改变字符串长度 c语言修改函数内容

c语言中只有gets函数才能改变字符串的长度吗

数组a的长度总共才100个字节,你的字符串长度就有107个字节的长度,你自己觉得正常吗,你用scanf()函数

成都创新互联公司成立于2013年,我们提供高端重庆网站建设成都网站制作成都网站设计、网站定制、营销型网站建设小程序制作、微信公众号开发、成都网站推广服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为成都纱窗企业提供源源不断的流量和订单咨询。

读入一个数a[0],你的程序应该是存在问题的!至于用gets()函数读入,这个才是正确的,你读入一个字符,字符串长度为1,这才是正确的呀。

c语言字符长度函数

正确的答案是5,题目选项有误。

首先strlen()函数返回的长度是不包含'\0',

第一个字符为:a

第二个字符为:b

第三个字符为:\n (换行符)

第四个字符为:2

第五个字符为:\ (\\转义为\)

所以答案为5。

(下图为实际代码演示)

扩展内容:

strlen()函数(C语言函数):

strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。

参考资料:strlen函数 - 百科

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(lenn)//字符串长度大于初始大小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。


文章名称:c语言函数改变字符串长度 c语言修改函数内容
地址分享:http://pwwzsj.com/article/doeeeoj.html