| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 785 人关注过本帖, 1 人收藏
标题:做到字符串数组动态内存存储~运行不正确~难道就没人会?~
取消只看楼主 加入收藏
起名真难
Rank: 1
来 自:广东广州
等 级:新手上路
帖 子:19
专家分:3
注 册:2011-3-31
结帖率:80%
收藏(1)
已结贴  问题点数:18 回复次数:0 
做到字符串数组动态内存存储~运行不正确~难道就没人会?~
程序代码:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
void main()
{char **ss,**h;

 int i,j,len=3;    //字符串个数为3个   
 h=ss;             //将ss的首地址赋值给h
 *ss=(char *)calloc(len,1);   //先将len个(3个)长度为1的连续空间给一级ss指针
 for(j=0;j<len;j++,*ss++)     //以下四行分别对每个一级指针赋字符串
 {for(i=0;(*(*ss+i)=getchar())!='\n';i++)    //对一级指针的i行中的元素分别赋值,知道遇到‘\n’为止
  *(ss+i)=(char *)realloc(*(ss+i),strlen(*(ss+i))+1);  //一级指针的第i行每增加一元素,在那一行上面内存增加一个单元
  *(*ss+i)='\0';    //在那一行中末尾加上转义字符0
 }

 ss=h;    //ss指回首位
 for(i=0;i<len;i++)    //以下是输出
 printf("\n%s",*(ss+i));
void free(char *ss);
}
我想动态分配3个连续的空间来装3个字符串(字符串未知),代码如上,我的目的是想让内存利用率达到最大,如果用字符串数组的话开始要先定义大小,这就要开很大的空间而造成浪费(在不知道各字符串大小情况下),不知道大家看懂我的代码没,在TC3.0上运行如下
输入:
china
japan
america

输出:
chin*
japan
america

在输出china时候那个*是其他的字符,郁闷,找不出错在哪里~小弟大一,只学完谭浩强的C程序设计,如果哥们找不出错误,有更好的办法请带注释附上代码,小弟万分感激!

[ 本帖最后由 起名真难 于 2011-4-29 18:48 编辑 ]
搜索更多相关主题的帖子: 字符串 
2011-04-29 02:33
快速回复:做到字符串数组动态内存存储~运行不正确~难道就没人会?~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024549 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved