做到字符串数组动态内存存储~运行不正确~难道就没人会?~
程序代码:
#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 编辑 ]