如果我们想在 c 中使用gets,我们将执行以下操作:
int main(void) {
char str[100];
while (gets(str)) {
printf("%s\n",str);
}
}
我们必须先知道 str 的长度(即 100),然后使用gets。是否可以在不知道 c 中数组长度的情况下使用gets?
如果您的意思是gets
安全使用,不,这是不可能的。
忠告:不要使用gets
,因为不知道长度,可能会导致缓冲区溢出。改为使用fgets
,或gets_s
在 C11 中使用。
事实上,自 C11 以来gets
已被删除。stdio.h
(在 C99 中已弃用)
简短的回答:没有。
长答案:如果您知道字符串不会超过一定大小,您总是可以分配更大的内存块。例如,字符串不太可能长于 1k,因此您总是可以简单地分配一个大小为 1k 的数组。但是,这确实是低效的,如果字符串可以任意长,也不起作用。