gets()
的代码片段
int main(int argc, char *argv[])
{
char str[MAX_SIZE]
gets(str);
printf("\n");
puts()
的代码片段
printf("The most probable key is: %d\n", max2);
puts(output);
return 0;
我没有粘贴我的全部代码,因为它似乎与我的问题无关。我只想知道解决此问题的方法,因为当我通过 GCC 运行我的代码时,它会给我错误并且不允许我使用 gets()
。我该如何解决这个问题?
最佳答案
改用fgets
和fputs
。除了消除 gets
的所有缺陷外,gets
和 fgets
的用法还有一个主要区别:fgets
在缓冲区中存储换行符(而 gets
没有)。
因此,等效项 - 即如果不需要则删除任何新行 - 可能如下所示。函数调用 strcspn(buffer,"\n")
给出最长的字符序列,直到遇到新行(或 strlen(buffer),如果字符串不包含新行)。通过将 0
写入此位置的索引,将删除一个新行(如果有的话)。
char buffer[MAX_SIZE] = "";
if (fgets(buffer, MAX_SIZE ,stdin)) {
buffer[strcspn(buffer,"\n")] = '\0';
}
关于c - 我可以使用什么替代方法来代替 gets() 和 puts()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54455908/