C 中的 gets 函数不通过命令行读取脚本 perl 或 python

gets function in C does not read script perl or python by command line

我需要帮助!我用 C 编写了一个程序,它使用 gets 函数读取,将内容放入缓冲区并打印缓冲区:

#include <stdlib.h>
#include <stdio.h>

int main(){
  char buffer[100];
  gets(buffer);
  printf(buffer);
return 0;
}

但是如果我在 Perl 或 python 中放置一个打印四个 A 的脚本,gets 函数会将其解释为一个字符串,然后打印该字符串: $(python -c "print 'A'*4")

认为 我知道你的意思,尽管它不清楚(所以我主要是在这里猜测):你想要 Perl 或 Python 脚本的输出被 gets 读取的输入对吗?然后你需要管道脚本的输出到你的程序中:

$ python -c "print 'A'*4" | ./your_program

这会将 python 程序的标准输出通过管道传递到您程序的标准输入。


我还假设这是为了 class 或了解缓冲区溢出的练习,因为这是最近使用 gets 的唯一原因。从C99标准开始就废弃了,在C11标准中被彻底移除