我正在尝试编写代码以刷新记忆,为课程做准备。
int main(){
int x;
for( x = 0;x < 10; x++){
printf("Hello worldn");
}
return 0;
}
但当我试着运行这个时,我得到了Too few arguments
我使用gcc -o repeat file.c
编译了上面的代码。然后要运行这个代码,我只需键入repeat
很抱歉,如果这是一个愚蠢的问题,我已经有一段时间没有上介绍课了。
当您键入时
filename
在提示下,操作系统将搜索路径。默认情况下,Linux不会在路径中包含当前目录,因此您最终会运行类似/bin/filename
的程序,它会抱怨,因为它需要参数。要了解您实际运行的文件,请尝试
which filename
要运行在工作目录中创建的filename
文件gcc,请使用
./filename
您的代码编译良好。尝试:
gcc -o helloworld file.c
./helloworld
更新:
根据最近的评论,问题是可执行文件名为repeat
,并且您使用的是csh或tcsh,所以repeat
是一个内置命令。
键入./repeat
而不是repeat
。
在提问时,不要遗漏这样的细节;复制并粘贴您的源代码、键入的任何命令以及收到的任何消息。
可执行文件名为file
,也是一个命令。
要运行您自己的程序,请键入
./file
编辑:
以上是一个有根据的猜测,基于以下假设:
- 实际的编译命令是
gcc file.c -o file
或gcc -o file file.c
;以及 - 如果您在没有参数的情况下调用预定义的
file
命令(供参考的man file
),它将生成该错误消息
问题最初说编译命令是gcc file.c
;现在它说CCD_ 16。(如果在没有参数的情况下运行file
命令,则会打印不同的错误消息)。
正确的方法是:
gcc file.c -o filename && ./filename
(我通常会调用可执行文件file
来匹配源文件的名称,但你可以用任何一种方式。)
如果成功,gcc
命令将在当前目录中为您提供一个名为filename
的可执行文件。&&
表示,只有在第一个命令成功的情况下才执行第二个命令(如果程序没有编译,则尝试运行程序毫无意义)。./filename
明确表示运行当前目录中的filename
可执行文件(.
);否则它会在你的$PATH
中搜索。
如果您收到错误消息Too few arguments
,则说明它不是来自您的程序;除非有什么东西明确地打印出来,否则您将看不到该消息。解释一定是你在运行其他程序。也许您的系统中已经有一个名为filename
的命令。
所以试着这样做:
gcc file.c -o filename && ./filename
看看会发生什么;它应该运行您的程序。如果有效,试着只键入
filename
看看这有什么用。如果没有运行您的程序,请键入
type -a filename
或
which filename
看看你实际在执行什么。
为了避免这种情况,养成使用./whatever
在当前目录中执行程序的习惯。