我需要阅读输入。输入可以是1
或a
或1 word1
或a word1 word2
。
如何阅读整个输入?我试过scanf("%s", var);
只能得到你写的第一件事。我不能使用scanf("%s %s %s", var, var2, var3);
,因为并不总是有3个变量。
我也试过了gets(var);
,我得到了warning: the 'gets' function is dangerous and should not be used.
我该怎么做?
答案 0 :(得分:0)
gets()
已被弃用,因为它无法知道缓冲区的大小。因此,它可以轻松覆盖您提供的缓冲区。
改为使用fgets()
。
char buffer[100];
fgets(buffer, sizeof buffer, stdin);
或者,如果您已动态分配内存,sizeof
运算符将无法提供帮助,因此您需要手动指定大小:
const size_t bufferSize = 100;
char *buffer = malloc(bufferSize);
fgets(buffer, bufferSize, stdin);
只需提醒一句,fgets()
函数将读取并将换行符存储到缓冲区中。