阅读C

时间:2016-03-27 22:53:29

标签: c scanf gets

我需要阅读输入。输入可以是1a1 word1a 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.

我该怎么做?

1 个答案:

答案 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()函数将读取并将换行符存储到缓冲区中。