【问题标题】:int main(int argc, const char * argv[]) AND file inputint main(int argc, const char * argv[]) AND 文件输入
【发布时间】:2014-05-09 23:38:48
【问题描述】:

我没用过,

int main(int argc, const char * argv[])

对于大多数程序,我通常只是在终端(使用 mac)中使用两个单独的 C 文件进行编译,例如……

gcc functions.c main.c

但现在我需要使用 int main(int argc, const char * argv[])... 我只是不知道我是否正确使用它。这是一些代码...

我在命令行编译...

gcc main.c input.txt

终端告诉我……

ld:对于架构 x86_64,文件太小

collect2: ld 返回 1 个退出状态

注意 我的函数可以工作(我在没有使用文件输入的情况下进行了测试)并且也在 main.c 中……我只是没有将它们包含在这篇文章中。此外,节点只是链表的基本节点结构。

int main(int argc, const char * argv[])
{
FILE *input;


input = fopen(argv[1], "r");


node *list = malloc(sizeof(node));
char *string = malloc(sizeof(char)*1023);

fscanf(input, "%s", string);

//convert a string to linked list
list= sTol(string);

//print the linked list
printList(list);

return 0;

} // end main()

我完全错了吗?输入只包含一行“你好”。我要做的就是将其读入我的程序并打印出来,以验证我是否正确读取了我的输入。

【问题讨论】:

  • 当您说您从未使用过main(int argc, const char * argv[]) 我希望您的意思是您从未使用过带有命令行参数的main 函数? IE。你以前只用过int main(void)
  • 嗯,你为什么要gcc main.c input.txt
  • 编译后不要使用 gcc... 后面有可执行文件 - 运行它:./a.out input.txt
  • 听起来你正在混淆编译你的程序(这是gcc所做的)和运行你的程序(当你程序的main 函数获取命令行参数)。
  • int argc 是函数参数,它告诉main 函数您的程序在启动时收到了多少参数(如命令ls -l。然后您可以在char **argv 中找到这些参数. 名称看起来很抽象,但只是将它们读为 ARGumentCountARGumentValues,因此 argc 和 argv。将文本文件传递给编译器是行不通的。 .

标签: c


【解决方案1】:

这不像 perl 脚本或 shell 脚本,您可以在其中运行

perl main.pl input.txt

对于像 C 这样的编译语言,你首先将程序编译成可执行文件

gcc main.c -o myprogram

然后使用输入文件运行可执行文件

./myprogram input.txt

【讨论】:

    猜你喜欢
    • 2020-11-03
    • 2011-07-08
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2018-12-01
    • 2014-04-23
    相关资源
    最近更新 更多