【发布时间】:2018-12-08 22:13:16
【问题描述】:
首先我想提一下我是编程新手。
我正在尝试编写一个接受多个输入的程序,其中最后一个是字符串,当我使用 get() 或 fgets() 函数时,它们会在前一个输入完成后读取输入。比如:
printf("Enter decimal:\n");
scanf("%d",&x);
printf("Enter string:\n");
gets(str[100]);
printf("%d\n%s",x,str);
示例输入/输出:
Enter decimal:
3\n //If I change line after inputting the decimal the program continues as if it already read the string
Enter string:
3
但是如果输入如下:
Enter decimal:
3 Hello World\n
Enter string:
3
Hello World
我想这就是 gets() 和 fgets() 函数的工作方式,但是有没有一种方法可以控制它或者是否有替代方法(输入的字符串可能很长 )
提前致谢。
【问题讨论】:
-
gets很危险且已弃用。根本不要使用它。 stackoverflow.com/questions/1694036/… -
请注意
gets()已被弃用且不安全。永远不要使用它。fgets()可以使用。 -
你的问题很不清楚。请尝试改进它。
-
gets()不仅已被弃用,而且 C11 从语言中删除它。它仅作为向后兼容性的扩展保留在现代 C 实现中。 -
下次提供一些minimal reproducible example。