字符串赋值问题?
求教:我定义了一个结构
typedef struct{
char * ch;//用来保存字符串
int length;//字符串的长度
}S;
然后定义了一个方法用来给结构赋值
Status strAssign(S t,char* chars){
if (t.ch!=NULL) {
free(t.ch);
t.ch=NULL;
}
int i;
char *c=chars;
for (i=0;*c!='\0';++c) {
++i;
}
if (!i) {
t.ch=NULL;
t.length=0;
}else{
t.ch=(char*)malloc(i*sizeof(char));
if (!t.ch) {
exit(SOVERFLOW);
}
for (int j=0; j<i; j++) {
t.ch[j]=chars[j];
}
t.length=i;
}
return OK;//ok表示成功
}
然后我写了一个测试
char *a="hello world";
S str;
strAssign(str, a);
这时我发现执行完strAssign后当前的str值仍然为未赋值状态。
请教高人:
1.为什么str的值没有被赋值成功?
2.另外我看到书中对代码中标红的地方 可以写成 t.ch[0..i-1],为什么我这样写编译器会报错,能告知这是什么意思吗?
谢谢回复!