在C

时间:2018-11-12 18:36:38

标签: c xcode

我陷入无法解决的问题。对于我的任务,我必须对C中的.txt文件进行一些处理,特别是必须使用命令行参数传递文件名。假设我们有这部分代码:

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


FILE *ptr_fd;
ptr_fd = fopen(argv[1], "r");

令我困惑的部分是您如何处理这些论点?您将.txt文件放在哪里?我已经读了一百个线程,但是仍然无法解决。我正在使用XCode,并且正在Mac上工作。我是否必须以任何方式使用终端才能使用此代码?我们将不胜感激对此主题的任何启示。

3 个答案:

答案 0 :(得分:1)

在XCode中,您可以在方案中指定要传递给程序的参数。转到“产品”->“方案”->“编辑方案”,然后切换到“ Argumnets”标签(请参见屏幕截图)。

然后从XCode放置可执行文件的位置加载任何文件。找出此位置的最简单方法是右键单击产品,然后“在取景器中显示”(请参见屏幕截图)。

在XCode之外,例如在终端窗口中,只需在命令名称后指定参数即可,例如./testCommandLine test.txt。任何打开的文件-如果没有给出绝对路径-将从当前工作目录开始查找。

希望有帮助。

Edit current scheme

enter image description here

答案 1 :(得分:0)

如果提供了相对文件路径,fopen将打开相对于当前工作目录的文件。如果您将绝对路径传递给您的程序,那么fopen将使用该路径。例如,如果您的file.txt位于/home/User/file.txt中,则可以将整个字符串传递给程序,fopen将找到它。

答案 2 :(得分:0)

第1步是检查您是否有参数。

if(argc!=2){printf("Usage:...");exit(1);}

之后,您可以直接使用参数。请注意,argv[0]将是可执行文件的路径/名称,argv[1]将是第一个参数(如果已传递),依此类推。打开文件时,必须将它们放置在工作目录中,或者除了文件名之外,还必须传递fopen路径。工作目录可能是也可能不是包含可执行文件的目录,具体取决于您的构建环境。