其实核心就是实现动态数组,无论字符串多长,都能够储存。
用getchar一个一个得到字符,直到文件结束。
核心代码实现:
int n=0,k=100; //初始化,字符串长度为0,字符串空间长度为100
char * s2 = NULL,s1 = (char *)malloc(100); //初始化字符串空间
if (s1 == NULL) return; //内存分配失败,返回
while((c=getchar())!=EOF){ //判断是否到文件结束,一个个读取字符
if(k<=n){ //当前字符串长度大于等于字符串空间长度时
k*=2; //长度增长2倍
s2 = (char *)realloc(s1,k); //重新分配内存
if(s2 == NULL){ //内存分配失败
free(s1); //释放已分配内存
return;
}else{ //内存分配成功
s1=s2;
}
}
s1[n++]=c; //字符串赋值字符
}
s1[n]=0; //字符串末尾置为\0