0
我對C很新,因此作爲我學習的一部分,我想創建一個函數,它只是返回一個字符串,它是輸入中的下一行沒有任何需要的論據。如何創建一個函數來返回輸入的下一行C
這是我到目前爲止有:
#define BUFFER 256
char *str;
char *getline()
{
if (str == 0)
str = (char*)calloc(BUFFER, sizeof(char));
if (fgets(str, BUFFER, stdin) != 0)
{
size_t len = strlen(str);
if (len > 0 && str[len-1] == '\n')
str[len-1] = '\0';
return str;
}
return 0;
}
現在,這是做這樣的事情的最好方法?有沒有更好的辦法可以解決你的問題? 如果這是最好的方式,我應該在哪裏免費分配我已經分配的calloc
?
誰負責釋放'str'?如果該線路長於256,該怎麼辦?沒有安全的參數就沒有辦法做到這一點。 – Elazar
哦,'str'應該是本地的或者是數組。 – Elazar
@ H2CO3你對getline的這個接口感覺很舒服 - 'str == 0'?它是一個變相的單身物體與公共場所。 – Elazar