我们总是在算法比赛中遇到输入不定长字符串,进行串匹配的问题,但是用gets()需要初始化一个定长例如char a[10000]的数组,这样实际是定长的字符串,这里分享给大家一个动态创建不定长字符串数组的原创代码,最后的L.data[]就是你需要的字符数组。–Muyuan
#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] = '\0';
(*L).length = 0;
(*L).MaxSize = 0;
}
int main() {
SeqList L;
InitList(&L);
char temp;
printf("请输入字符串以回车结束:");
while ((temp = getchar()) != '\n') {
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("\n");
//英文没有问题,但是对于汉子来说,一个汉子是3个char(三个字节)
printf("%d\n", L.length);
printf("%d\n", L.MaxSize);
return 0;
}