注册 登录
编程论坛 VC++/MFC

根据每次从键盘输入字符串的长度,分配一块相应大小的存储区的程序

fzujj 发布于 2007-09-19 00:39, 1189 次点击
根据每次从键盘输入字符串的长度,分配一块相应大小的存储区的程序
8 回复
#2
踏魔狼2007-09-19 11:16
char str[256];
cin>>str;
int s = strlen(str);
char *pstr = new char[s+1];
pstr = str;
cout<<pstr<<endl;
#3
fzujj2007-09-19 13:52

谢谢你的回复,不过那不符合题目的意思。题目要求做到内存最优化。你那样是浪费内存。麻烦哪位帮我改进下面的程序
//根据输入的字符串长度分配相应大小的存储区
#include<iostream>;
using namespace std;
void main(){
int i=0,j=0;
char ch,*p;
cout<<"输入任意的字符串:"<<endl;
while( cin.get(ch)!='13'){
i++;
}
p=new char[i];
cout<<"输入上次输入的字符:"<<endl;
for(j;j<i;j++)
cin>>*(p+j);
for(j=0;j<i;j++)
cout<<*(p+j);
delete p;
}

#4
fzujj2007-09-19 18:18
哪位帮帮忙?
#5
踏魔狼2007-09-19 19:10

#include<iostream>;
using namespace std;
void main(){
int i=0;
char *p;
cout<<"输入任意的字符串:"<<endl;
while( cin.get()!='\n'){
i++;
}
p=new char[i+1];
cout<<"输入上次输入的字符:"<<endl;
cin.getline(p,i+1);
cout<<p<<endl;
delete[] p;
}
这样的确是可以,但要输入两次.


#include<iostream>;
using namespace std;
void main(){
int i=0;
cout<<"输入任意的字符串:"<<endl;
if(cin.get()!= '\n')
{
i = cin.gcount(); // 这里只能得到最后所输入的字符数.不能得到全部输入的字符数.所这个方法也不可.
// 如果可以得到全部输入的字符数,就更完美啦.
cin.unget();
char *p=new char[i+1];
cin.getline(p, i+1);
cout<<p<<endl;
delete[] p;
}
}

#6
fzujj2007-09-19 21:41

非常感谢5楼的,我刚刚接触C++,那是我写的第一个C++程序,C++还有很多没学到,希望多多指教。

#7
dlgdd2007-09-20 12:02
牛人啊。第一个居然不是“hello world”
pfpf

#8
fzujj2007-09-20 13:35

我学完了C。

#9
zhangtuo082011-02-10 14:18
了然
1