C语言输入不定长的字符串(含空格,以回车结束)

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

typedef struct {
          
   
    char *data;
    int MaxSize;
    int length;
} SeqList;

//初始化
void InitList(SeqList *L) {
          
   
    (*L).data = (char *) malloc(sizeof(char));
    (*L).data[0] = ;
    (*L).length = 0;
    (*L).MaxSize = 0;
}

int main() {
          
   
    SeqList L;
    InitList(&L);
    char temp;
    printf("请输入字符串以回车结束:");
    while ((temp = getchar()) != 
) {
          
   
        char *p = L.data;
        L.data = (char *) malloc((L.MaxSize+1) * sizeof(char));
        for (int i = 0; i < L.length; i++) {
          
   
            L.data[i] = p[i];
        }
        L.MaxSize++;
        free(p);
        L.data[L.length++] = temp;
    }

    for (int i = 0; i < L.length; i++)
        printf("%c", L.data[i]);//L.data[]就是你需要的字符数组

    printf("
");
    //英文没有问题,但是对于汉子来说,一个汉子是3个char(三个字节)
    printf("%d
", L.length);
    printf("%d
", L.MaxSize);
    return 0;
}
经验分享 程序员 微信小程序 职场和发展