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

C中的gets函数不通过命令行读取脚本perl或python,c,function,scripting,gets,C,Function,Scripting,Gets,我需要帮助!我用C编写了一个程序,用gets函数读取,将内容放入缓冲区并打印缓冲区: #include <stdlib.h> #include <stdio.h> int main(){ char buffer[100]; gets(buffer); printf(buffer); return 0; } #包括 #包括 int main(){ 字符缓冲区[100]; 获取(缓冲区); printf(缓冲区); 返回0; } 但是,如果我用Perl或py

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

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

int main(){
  char buffer[100];
  gets(buffer);
  printf(buffer);
return 0;
}
#包括
#包括
int main(){
字符缓冲区[100];
获取(缓冲区);
printf(缓冲区);
返回0;
}
但是,如果我用Perl或python编写一个脚本来打印四个a,gets函数会将其解释为字符串,然后打印字符串: $(python-c“print'A'*4”)

我想我知道你的意思,尽管它不清楚(所以我在这里主要是猜测):你希望Perl或python脚本的输出是由
gets
读取的输入,对吗?然后,您需要将脚本的输出通过管道传输到程序中:

$ python -c "print 'A'*4" | ./your_program
这将通过管道将标准输出从
python
程序传递到程序的标准输入



我还假设这是一个用来学习缓冲区溢出的类或练习,因为这是现在使用
get
的唯一原因。自C99标准以来,它已经过时,而在C11标准中,它被完全删除。

我不理解您的问题,请进一步说明您的问题。另外,
gets
已经从C中删除(在C11中),并且在此之前已被弃用。永远不要使用它,它不可能安全使用。您描述的行为与预期一样。Joachim Pileborg已经在回答中给了我解决方案,无论如何,谢谢!