c++中,用char,不知道要输入多长的字符。 就一个劲的敲,觉得够了就回车,这个动态字符怎么创建
发布网友
发布时间:2022-03-28 22:14
我来回答
共3个回答
热心网友
时间:2022-03-28 23:43
实现这个功能很简单。。但不知道你要干啥。
第一种,无聊方式:
#include <stdio.h>
int main()
{
char c;
do{
scanf("%c",&c);
printf("%c",c);
}while(c!='\r');
return 0;
}
第二种,有用方式
#include <stdio.h>
int main()
{
int size=20; /*内存容量*/
char *c=(char*)malloc(size);
int i=0,j=0; /*i是字符串长度计数器,j用于辅助*/
char *temp;
do{
scanf("%c",c+i);
i++;
if(i>=size-1)
{
size*=2; /*内存不够,扩充2倍容量*/
temp=(char*)malloc(size);
for(j=0;j<size/2;j++)
temp[j]=c[j];
free(c);
c=temp;
}
}while(*(c+i-1)!='\n');
for(j=0;j<i;j++)
printf("%c",*(c+j));
}
啊。刚才没看清是C++,反正malloc和free你换成new和delete就是了。基本思想就是,先预设一定容量,比如10个字节,20个字节,然后往里面塞字符串,到一定容量不够了,就搞个容量翻倍的空间,然后把原来的字符塞进去。然后把原来free或者delete掉,新的空间继续使用,然后循环判断就是了。
热心网友
时间:2022-03-29 01:01
在命令行中,你最多能输入4096个字符,超过后就无法再输入了,不信你试试。
所以,不可能无限长。
热心网友
时间:2022-03-29 02:36
(1) 可以定义一个很大的char 数组 ,比如 char s[10000]; 不过这样比较浪费空间
(2)预先估计你的字符串长度,假设为n,然后 int n; cin>>n; char *s=new char[n];
(3)将char类型改成string,定义 string s: cin>>s; 这样无论一行有多长都可以创建成功。
然后const char *Str=s.c_str();