我只是尝试执行一个简单的程序执行程序并传递两个参数。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
start = atoi(argv[1]);
stop = atoi(argv[2]);
for(start; start < stop; start++)
{
printf("hello");
}
}
为什么这不起作用?当我编译它时,声明启动和停止。当我尝试将其作为像./file 3 5
这样的可执行文件运行时,它会说“。”不被视为内部或外部命令。我在我的寡妇cmd提示符上使用了mingw。任何想法为什么它不会像我想要的那样运行?那就是:编译,输入可执行文件./file 3 5
然后它像正常一样运行?
答案 0 :(得分:3)
那是因为你没有宣布开始或停止。您必须先声明变量才能使用它们。它们不只是凭空出现。
答案 1 :(得分:2)
试试这个
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
int start = atoi(argv[1]);
int stop = atoi(argv[3]);
for(start; start < stop; start++)
{
printf("hello");
}
}
答案 2 :(得分:2)
你正在使用的Windows shell基本上是DOS-ish的东西。 ./prog
不起作用,因为斜杠不是目录分隔符。您必须使用.\prog
,或仅使用prog
,因为.
始终隐含PATH
。
除此之外,您还缺少start
和stop
的声明,其他答案和评论也很清楚。
答案 3 :(得分:1)
好吧,你实际上是在不声明它们的情况下使用 start 和 stop 变量。
您正在传递两个应该是整数的主要字符串( argv [1] 和 argv [2] );因此,您需要将 start 和 stop 变量作为整数。
因此,您有两个选择(相同,只需选择您喜欢的选项):
int start = atoi(argv[1]);
int stop = atoi(argv[2]);
或
int start, stop;
start = atoi(argv[1]);
stop = atoi(argv[2]);