c-编写一个程序,要求如下:

问题描述

编写一个程序,要求如下:

从标准输入读取一个字符串,存入一个动态分配的字符数组中。如何处理变长输入。(C++)是书上动态内存这一章的习题,所以指定用数组解。

解决方案

A)
A.1)先分配一个指定长度(假定是n)。
A.2)逐个字节读,
A.3)读到指定长度到了之后,重新分配一个n+10;把已读的赋值过来,继续读。
A.4)重复A.2),直到读完
B)
B.1)先分配一个指定长度(假定是n)+一个指向字符的指针。
B.2)逐个字节读
B.3)读到指定长度到了之后,再分配一个n+一个指向字符的指针;把前一个的指针指向这个块
B.4)重复B.2)直到读完

解决方案二:

使用vector<string>

解决方案三:

先求出输入长度,然后再动态分配内存。

解决方案四:

抛弃字符数组,使用字符串吧。(注意这是指字符数组:类似char arrChar_1[] = {'a','b','','d','e'}; ,而不是字符串数组。)
STL+string,才是c++的用法

解决方案五:

#include
#include
using namespace std;
int main(void)
{
char ch;
int i=1;
char *before = new char[1],*temp;
while (cin >> ch)
{
temp = new char[i];
temp[i - 1] = ch;
for (int j = 0; j < i - 1; j++)
temp[j] = before[j];
delete[] before;
before = temp;
++i;
}
for (int j = 0; j < i - 1; j++)
cout << temp[i];
}

解决方案六:

#include
#include
#include
char strdup(char const *string) /从标准输入读取一个字符串把字符串复制到动态分配的内存中,并返回字符串的拷贝*/
{
char cp;
//int i;
cp = malloc((int)strlen(string) + 1);
if (cp != NULL)
{
printf("successful memoryn");
strcpy(cp, string);
}
return cp;
}
void main() /
测试函数, 总是运行到一半就没结果了.*/

{
char ch;
char *string = "";
char *str = string;
while (( ch = getchar() ) != EOF)
{
*string++ = ch;
}
puts(strdup(str));
}
void main() /测试函数改成这样就能输出结果,但是这不是我想要的方式,我想让他从终端读取输入的字符串,再把字符串复制到动态分配的内存中,并返回到字符串的拷贝./
{
char *string = "huangpei";
puts(strdup(str));
}

解决方案七:

抱歉,上面是错的,
http://bbs.csdn.net/topics/370168078这里有讨论

时间: 2024-08-18 01:23:58

c-编写一个程序,要求如下:的相关文章

c语言-编写一个程序,打印输入中的单词长度的直方图。垂直方图。

问题描述 编写一个程序,打印输入中的单词长度的直方图.垂直方图. 直方图是如何理解????求教这道题~~ 这道题目是书上的!有没有懂的大神.给讲解啊. 解决方案 问题是怎么解决的? 我想到的就是算好格式用printf()一行行的输入,最后拼成直方图.

源代码-请求高手为我用C++编写一个程序

问题描述 请求高手为我用C++编写一个程序 要求:(1)可以秒控 (2)可以括兵营 (3)免抓数据包 (4)要全部源代码 写好以后发ilovejunhongjing@163.com 解决方案 首先把需求描述清楚,这样大家才好帮你 解决方案二: 题目要求都没,这东西得自己动手哈

c++-//编写一个程序,最多将10个donation值读入到一个double数组中。

问题描述 //编写一个程序,最多将10个donation值读入到一个double数组中. #include int main() { using namespace std; int donation; double average; int sum; int c,i; for(i=1;i<=10;i++) { while(isdigit(donation)) cout<<"Enter "< cin>>donation[i]; sum+=donati

此程序是 程序-编写一个程序,打印输入中各个字符出现频度的直方图

问题描述 编写一个程序,打印输入中各个字符出现频度的直方图 #include /* NUM_CHARS should really be CHAR_MAX but K&R haven't covered that at this stage in the book / #define NUM_CHARS 256 int main(void) { int c; long freqarr[NUM_CHARS + 1]; long thisval = 0; long maxval = 0; int t

c++-C++编写一个程序,输入一个广义表,对广义表遍历并且计算广义表的个数。

问题描述 C++编写一个程序,输入一个广义表,对广义表遍历并且计算广义表的个数. C++编写一个程序,输入一个广义表,对广义表遍历并且计算广义表的个数. 解决方案 http://blog.csdn.net/jack_wong2010/article/details/6910200

字符串四则运算-用c#编写一个程序,以最原始的方法进行两个字符串的四则运算

问题描述 用c#编写一个程序,以最原始的方法进行两个字符串的四则运算 字符串里面是数值,且不受字数限制. 如两个字符串相加"121343435"+"3453245",设计的程序是:个位与个位相加,满10进1,十位于十位相加... 如果设计的乘法,也是个位先和个位相乘...完了错开一位相加 采取最原始的方法,就像小学学习四则运算一样,一步一步进行 不能把字符串先转换为int等类型在进行运行,因为int类型储存数值长度短,这个程序设计的意义就是可以进行不受字数限制的四则

求解:编写一个程序,接受一个整数输入,然后显示所有小于或等于该数的素数。

问题描述 求解:编写一个程序,接受一个整数输入,然后显示所有小于或等于该数的素数. #include #include #include int main(void) { int i; while(scanf("%d",i)) { for(int j=1;j<=i;j++) { for(int k=1;k<j;k++) { if(j%k==0) continue; else goto line; } line: printf("there are %d"

c语言-编写一个程序遇到的疑问

问题描述 编写一个程序遇到的疑问 #include int main() { float t = 0; float invalue; float average; char ch; float all = 0; for (;;) { printf("请输入数据:"); scanf("%f", &invalue); all = all + invalue; printf("%fn", all); t = t + 1; printf(&quo

加密-编写 一个程序vxworks下的简单程序

问题描述 编写 一个程序vxworks下的简单程序 编写 一个程序vxworks下的简单程序,可以与加密狗关联,在没有加密狗的情况下,系统无法启动. 解决方案 编写一个简单的C++程序编写一个简单的servlet小程序Vim 编写一个简单程序

怎么样编写一个程序,彻底可以从系统中隐藏调用

问题描述 怎么样编写一个程序,彻底可以从系统中隐藏调用 怎么样编写一个程序,彻底可以从系统中隐藏调用,包括文件名和进程都不被看到,但是可以执行其中的程序呢? 解决方案 http://blog.csdn.net/aohan/article/details/5035162 解决方案二: hook 系统相关进程API.来隐藏