int main(int argc, const char * argv[]) AND 文件输入
Posted
技术标签:
【中文标题】int main(int argc, const char * argv[]) AND 文件输入【英文标题】:int main(int argc, const char * argv[]) AND file input 【发布时间】: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。将文本文件传递给编译器是行不通的。 .
【参考方案1】:
这不像 perl 脚本或 shell 脚本,您可以在其中运行
perl main.pl input.txt
对于像 C 这样的编译语言,你首先将程序编译成可执行文件
gcc main.c -o myprogram
然后使用输入文件运行可执行文件
./myprogram input.txt
【讨论】:
以上是关于int main(int argc, const char * argv[]) AND 文件输入的主要内容,如果未能解决你的问题,请参考以下文章
int main(int argc, const char * argv[]) AND 文件输入
以这种格式将 argv 变量传递给 main 的结果 main( int argc, char const * argv )
int main(int argc, char* argv[]) 和 int main(int argc, char** argv) [关闭]
int main(int argc,char *argv[])与int main(int argc,char **argv)区别?