【发布时间】: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中找到这些参数. 名称看起来很抽象,但只是将它们读为 ARGumentCount 和 ARGumentValues,因此 argc 和 argv。将文本文件传递给编译器是行不通的。 .
标签: c