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