【发布时间】:2013-09-19 23:16:35
【问题描述】:
我在 C 中有以下代码部分:
int main(int argc, char *argv[])
{
char *input;
int lines;
int p;
input = (char*)malloc(10);
input = argv[0];
for(p=0;p<10;p++)
{
printf("%c",input[p]);
}
在我的 Unix 系统上,我进行以下调用:
./program_name.exe < inputfile
其中inputfile 是一个包含以下内容的文件:000000010Z
我收到的前面命令的输出是:
./program_
我错过了什么?
【问题讨论】:
-
如果目标是阅读标准输入,您可能需要阅读有关 getc()、fgets() 或 scanf() 的内容。
-
malloc 没用,您没有使用分配的缓冲区,
-
argv[0] 是程序名称。 argv[1] 是第一个命令行参数。如果您将文件重定向到标准输入,您需要在程序中将标准输入作为文件打开并从中读取(fopen、fgets、fclose)或读取将返回相同内容的 ketstrokes(getchar、gets)。
-
您似乎缺少“name.exe”。尝试循环到 18 而不是 10!