最近在學習壓縮算法,在自己上手編程的,突然發現當不知道用戶輸的字符有多長時,我該怎麼正確的獲取用戶輸入的字符,因此就嘗試了怎麼去實現,沒想到自己還真不會,也是因爲太久不編程了吧。 當然了,現在一些在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:這博客的格式怎麼總是不對,鬱悶