输入任意长度字符串,并输出打印字符串及其长度。
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/e1fe9925bc315c60479e44da83b1cb13495477ff?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
char *input();//输入任意长度字符串(可包含空格),回车确认,返回输入的字符串
int getLen(char *str);//通过指针获取字符串长度
void meError(void *p);//内存申请失败
int main()
{
char *str=NULL;
str=input();
printf("\n输入的字符串为:%s\n",str);
printf("\n输入的字符串长度为:%d\n",getLen(str));
return 0;
}
char *input()
{
int len=2;
char c=0,*str=NULL,*strSave=NULL;
while((c=getch())!='\r')
{
printf("%c",c);
if(str==NULL)
str=(char *)malloc(sizeof(char)*len);
else
{
len++;
strSave=(char *)realloc(str,sizeof(char)*len);
if(strSave)
str=strSave;
}
str[len-2]=c;
str[len-1]=0;
}
return str;
}
int getLen(char *str)
{
int i=0;
char *p=&str[0];
while(*p!=0)
{
i++;
p++;
}
return i;
}
void meError(void *p)//内存申请失败
{
if(p==NULL)
{
printf("异常:内存申请失败!回车结束程序!\n");
while(getch()!='\r');
exit(0);
}
}