程序有个小问题,请大家帮忙看看!

jianzhibeihang 2009-10-29 12:13:18
程序的输出是空白,不知道哪里错了,请大家指点下!多谢了

源代码如下:

#include <iostream>
#include <string>
#include <vector>
#include <stdlib.h>
#include <string.h>

using namespace std;

int
main()
{
vector<string> svec;
string tmp;

while(cin >> tmp)
svec.push_back(tmp);

int size = svec.size();
char *ptr[size],*str;
int i,j,len;

for(i = 0; i < size; i++){
tmp = svec[i];
len = svec[i].size();
str = NULL;
for(j = 0; j < len; j++){
str = (char *) malloc((len + 1) * sizeof(char));
str[j] = svec[i][j];
}
str[len] = '\0';
cout << endl << str <<endl;
ptr[i] = (char *) malloc((len + 1) * sizeof(char));
strncpy(ptr[i],str,len);
ptr[i][len] = '\0';
delete [] str;
}

for(i = 0; i < size; i++){
cout << ptr[i]<<" ";
delete [] ptr[i];
}
cout <<endl;
return 0;
}
...全文
134 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruanmengkai 2009-10-29
  • 打赏
  • 举报
回复
你写的自己编译能通过吗,我觉得你的while循环也没结束的条件
int size = svec.size();
char *ptr[size],*str;
中的size在编译时根本就不能确定值
cphj 2009-10-29
  • 打赏
  • 举报
回复
char *ptr[100],*str;

        str = (char *) malloc((len + 1) * sizeof(char));
for(j = 0; j < len; j++){
str[j] = svec[i][j];
}
cphj 2009-10-29
  • 打赏
  • 举报
回复
改2个地方,然后运行,用键盘输入字符串,用CTRL+Z结束输入就可以打印了
	char *ptr[100],*str;
		str = (char *) malloc((len + 1) * sizeof(char));
for(j = 0; j < len; j++){
str[j] = svec[i][j];
}
papaofdoudou 2009-10-29
  • 打赏
  • 举报
回复
程序本身就有错误,静态分配的数组大小必须是编译器常量
rlxtime 2009-10-29
  • 打赏
  • 举报
回复
你能够编译通过么?

int size = svec.size();
char *ptr[size],*str;

这样写size也行?
jianzhibeihang 2009-10-29
  • 打赏
  • 举报
回复
编译必须能通过阿!!
jianzhibeihang 2009-10-29
  • 打赏
  • 举报
回复
while那里出来就是输入ctrl+d
在linux下面
sea_sharka_17 2009-10-29
  • 打赏
  • 举报
回复
你这代码不是只有一点问题 是问题太多了 while那个地方可以出来吗? 出不来下面的代码有什么用?

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧