| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 447 人关注过本帖
标题:不看不知道
只看楼主 加入收藏
youxiaxyz
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-4-5
收藏
 问题点数:0 回复次数:2 
不看不知道

#include < stdio.h >
#include <stdlib.h>
#include <string.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;


typedef struct{
char * ch;
int length;
}HString;


Status StrAssign(HString &T,char *chars){
int i ,j;
char * p = T.ch,c;
j = strlen(chars);
for(i = 0,c = chars[i]; c;++i,++c);//surpise c = chars[i] char c c++
if(!i){T.ch = NULL; T.length = 0;}
else{
if(!(T.ch = (char *)malloc(j*sizeof(char))))//将i改为J更好
exit(OVERFLOW);
T.ch = chars;//surpise T.ch[0.1.2.3......] = chars[0.1.2.3......]
T.length = j;//T.length = i i是指针长度随机的
}
return OK;
}


void main(){
HString T;
char s[100];
printf("please input a string\n");
gets(s);
StrAssign(T,s);
puts(T.ch);
printf("the length is %d\n",T.length);
//if( T.length ) free( T.ch );//为何出错指点一下
}

2006-04-16 19:58
andyss
Rank: 1
等 级:新手上路
帖 子:189
专家分:0
注 册:2006-4-8
收藏
得分:0 
应该不能free,可能没这个权限吧!要全部把T删掉才可以.

幽幽黄桷兰----建四狼
2006-04-16 20:01
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

#include <stdio.h >//多加了一个空格
#include <stdlib.h>
#include <string.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;


typedef struct{
char * ch;
int length;
}HString;

//在这里∨ 把&去掉
Status StrAssign(HString &T,char *chars){
int i ,j;
char * p = T.ch,c;
j = strlen(chars);
for(i = 0,c = chars[i]; c;++i,++c);//surpise c = chars[i] char c c++
if(!i){T.ch = NULL; T.length = 0;}
else{
if(!(T.ch = (char *)malloc(j*sizeof(char))))//将i改为J更好
exit(OVERFLOW);
T.ch = chars;//surpise T.ch[0.1.2.3......] = chars[0.1.2.3......]
T.length = j;//T.length = i i是指针长度随机的
}
return OK;
}


void main(){
HString T;
char s[100];
printf("please input a string\n");
gets(s);
StrAssign(T,s);
puts(T.ch);
printf("the length is %d\n",T.length);
if( T.length ) free( T.ch );
}

2006-04-16 22:53
快速回复:不看不知道
数据加载中...
 
   



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

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