最近在学习压缩算法,在自己上手编程的,突然发现当不知道用户输的字符有多长时,我该怎么正确的获取用户输入的字符,因此就尝试了怎么去实现,没想到自己还真不会,也是因为太久不编程了吧。 当然了,现在一些在C基础上开发的语言基本都有这些函数,因为我就是纯用C写,并且让用户在小黑窗输入字符串,最关键的是我想自己写一个,即使他可能没什么用,所以那些线程的函数都没有用。写的时候倒是baidu了好多网站,结果发现最后写出来就很短的十几行代码。真是。。。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#define byte unsigned char
#define BYTE sizeof(byte)
void RLEString();
byte* getFileName();
void main()
{
printf("请输入您压缩的txt文件名:");
byte *fileName = getFileName();
printf("%s", fileName);
free(fileName);
}
byte *getFileName()
{
byte *fileName = NULL;
int SpaceNeed = 1,flag = 0; //spaceNeed用于统计总共需要多空间,flag表示是否开辟过空间
char c;
while ((c = getchar()) != '\n'){
if (flag == 0){
flag = 1;
fileName = (byte *)malloc(BYTE * SpaceNeed);
}
else
fileName = (byte *)realloc(fileName, BYTE * SpaceNeed);
fileName[SpaceNeed - 1] = c;
SpaceNeed++;
}
fileName = (byte *)realloc(fileName, BYTE * (SpaceNeed));
fileName[SpaceNeed-1] = '\0';
return fileName;
}
我是个编程新手,目前正在努力学习,望能帮助和我一样的学习者。
希望各路大牛我的不足和提供更好的思路。谢谢。
PS:这博客的格式怎么总是不对,郁闷