这是我正在尝试运行的代码
#include<stdio.h>
#include<string.h>
int overFlow(char* value){
char string[8];
strcpy(string, value);
return 0;
}
int main(int argc, char** argv){
char string[10];
strcpy(string, argv[1]);
overFlow(string);
return 0;
}
使用具有此
的简单文本文件hello
但是当我执行“./program&lt; textfile”时,我遇到了一个段错误。
任何帮助都会很棒。感谢。
答案 0 :(得分:1)
使用以下命令执行程序时:
./program < textfile
您不会将任何参数传递给程序。所以arg count是1,而这个数组:argv只有程序名
这一行失败了:
strcpy(string, argv[1]);
答案 1 :(得分:-1)
其他答案对于实际原因是正确的。您可以用来调用程序的命令是:
cat textfile | ./myprogram
这样做首先cat命令打印出textfile和|的内容operator将一个命令的输出放入下一个命令的输入中。然后它运行
./myprogram hello
您可能还想增加缓冲区并查看strncpy以防止溢出。