各位大神能看一下吗,为什么运行无法输出字符串啊,这么短可是看了好久一直不知道错在哪,拜托了!
#include <stdio.h>
#include <stdlib.h>

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

int StrAssign(HString &T,char* chars){
    int i=0,j;
    if(T.ch){
        free(T.ch);
    }
    char *c;
    for(i=0,c=chars;*c;++i,++c);
    if(!i){
        T.ch=NULL;
        T.length=0;
    }
    else{
        if(!(T.ch=(char*)malloc(i*sizeof(char)))){
            return 0;
        }
        for(j=0;j<i;j++){
            T.ch[j]=chars[i];
        }
        T.length=i;
    }
    return 1;
}

void StrPrint(HString T)
{
    int i;
    for(i=0;i<T.length;i++){
       printf("%c",T.ch[i]);
    } 
    printf("\n");

}

int main(){
    HString S;
    char *chars;
    printf("请输入字符串:");
    scanf("%s",chars);
    StrAssign(S,chars);
    StrPrint(S);
    return 0;
}
c
0

2个回答

如果问题得到解决,请点我回答左上角的采纳和向上的箭头,谢谢

#include <stdio.h>
#include <stdlib.h>

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

int StrAssign(HString &T,char* chars){
    int i=0,j;
    if(T.ch){
        free(T.ch);
    }
    char *c;
    for(i=0,c=chars;*c;++i,++c);
    if(!i){
        T.ch=NULL;
        T.length=0;
    }
    else{
        if(!(T.ch=(char*)malloc(i*sizeof(char)))){
            return 0;
        }
        for(j=0;j<i;j++){
            T.ch[j]=chars[j];
        }
        T.length=i;
    }
    return 1;
}

void StrPrint(HString T)
{
    int i;
    for(i=0;i<T.length;i++){
       printf("%c",T.ch[i]);
    } 
    printf("\n");

}

int main(){
    HString S;
    S.ch = NULL;
    S.length = 0;
    char *chars = (char *)malloc(sizeof(char) * 100);
    printf("请输入字符串:");
    scanf("%s",chars);
    StrAssign(S,chars);
    StrPrint(S);
    return 0;
}

图片说明

0

你主程序中新建的char指针没指向一个实际对象

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!