-1

如果我们想在 c 中使用gets,我们将执行以下操作:

int main(void) {
  char str[100];
  while (gets(str)) {
  printf("%s\n",str); 
 }
}

我们必须先知道 str 的长度(即 100),然后使用gets。是否可以在不知道 c 中数组长度的情况下使用gets?

4

2 回答 2

5

如果您的意思是gets安全使用,不,这是不可能的。

忠告:不要使用gets,因为不知道长度,可能会导致缓冲区溢出。改为使用fgets,或gets_s在 C11 中使用。

事实上,自 C11 以来gets已被删除。stdio.h(在 C99 中已弃用)

于 2013-07-19T02:16:43.580 回答
1

简短的回答:没有。

长答案:如果您知道字符串不会超过一定大小,您总是可以分配更大的内存块。例如,字符串不太可能长于 1k,因此您总是可以简单地分配一个大小为 1k 的数组。但是,这确实是低效的,如果字符串可以任意长,也不起作用。

于 2013-07-19T02:17:07.350 回答