为什么没输应该怎么改


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

typedef struct{

char* elem;

int length;

}Str;


void init(Str* p){

p->elem=NULL;

p->length=0;

}


void put(Str* p,char* q){//赋值

int len=strlen(q);

p->elem=(char*)malloc(sizeof(char)*len);

for(int i=0;i<len;i++){

    p->elem[i]=q[i];
}

}




void print(Str* p){

for(int i=0;i<p->length;i++){

    printf("%c",p->elem[i]);
}


}






int main()
{

    Str str;
    init(&str);
    char str1;
    scanf("%s",&str1);
    put(&str,&str1);

    print(&str);

    return 0;
}

这段代码中,scanf("%s",&str1); 应该改为 scanf("%c", &str1);。因为 scanf 函数用于读取字符,而不是字符串。所以在这里应该使用 %c 格式说明符来读取一个字符。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢