好心人进下,二维字符数组输入问题,动态分配空间(C++)

[复制链接]
查看11 | 回复3 | 2009-10-22 11:40:37 | 显示全部楼层 |阅读模式
根据题目要求,n可以设为101没问题,但m的大小不可能由用户输入来定,你只有两种选择:(1)把m设的足够大,以保证你的输入行数不会超过它;(2)动态数组.可以用指针和整型变量联合实现,也可以用vector库.
回复

使用道具 举报

千问 | 2009-10-22 11:40:37 | 显示全部楼层
初学的题目不要用vectorlz应该先去看 数据结构 的那套视频讲座
回复

使用道具 举报

千问 | 2009-10-22 11:40:37 | 显示全部楼层
同意楼上的 可以用vector作弊 然后再申请空间 不过用2维数组来存放字符 真是费劲不讨好.
回复

使用道具 举报

千问 | 2009-10-22 11:40:37 | 显示全部楼层
改了,已经符合你的要求了#includeusing namespace std;void main(void){ int m=0,n=0,m1,n1; int i; char *p=NULL,*t=NULL; char str[200]="";//临时保存输入的一条字符串 while(1) { m1=m; n1=n;//保存之前的mn scanf("%s",str); if(strcmp(str,"end")==0)break; if(strlen(str)+1>m)m=strlen(str)+1;//确定最长的字符串为宽度 n++;//增加高度 t=(char *)malloc(m*n);//分配 for(i=0;i<n1;i++)memmove(t+i*m,p+i*m1,m1);//移动 memmove(t+i*m,str,m);//把新的加入if(p!=NULL)free(p); p=t; } for(i=0;i<n;i++)cout<<strlen(p+i*m)<<endl; cout<<n<<endl; }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行