在 C, NetBeans 7.2 中正确使用 main 函数参数



我很难尝试将目录路径传递给 NetBeans 7.2 上的程序,我试图做的是在项目的参数上编写"${OUTPUT_PATH}" "/home/vitor/Área de Trabalho/Programação/Teste"/home/vitor/Área de Trabalho/Programação/Teste是我的目录路径,我里面有 3 个.txt文件,我的程序应该通过在路径末尾添加它们的名称来读取它们中的每一个,如下所示:

/home/vitor/Área de Trabalho/Programação/Teste/times.txt

这是我的代码段:

int main(int argc, char *argv[]){
if(argc == 1){
printf("ERROR: The directory's path wasn't informed.");
exit(1);
}
else{
char endtimes[200];
strcpy(endtimes, argv[1]);
strcat(endtimes, "times.txt");
}    
FILE *caminho;
caminho = fopen(endtimes, "r");
if (!caminho){
printf("Error trying to open file.");
exit(1);
}

每次我尝试运行代码时,它都会显示Error trying to open file.我检查了 argc,它的值是 4(我想这是不正确的。我没有足够的使用 netbeans 的经验,事实上,这是我第一个处理文件的程序。那么,你们能帮我吗?

我正在使用 Ubuntu 13。

感谢您的耐心等待。

--编辑--

我根据下面的评论对项目的参数进行了更改,endtimes存储了正确的文件路径:/home/vitor/Área de Trabalho/Programação/Teste/times.txt但我仍然得到Error trying to open file.文件路径是否应该不同,因为我使用的是 Ubuntu 13?

argv[0]

是可执行文件的名称,如果您以文件名的形式传递了 3 个参数,它们将分别存储在argv[1]argv[2]argv[3]中。所以你可能想要这样的东西:

strcpy(endjogos, argv[1]);
strcat(endjogos, "jogos.txt");
strcpy(endtimes, argv[2]);
strcat(endtimes, "times.txt");
strcpy(endapost, argv[3]);
strcat(endapost, "apostas.txt");

请注意,C 数组的索引为零,因此使用 argc==4 时,你有argv[0]argv[1]argv[2]argv[3]

如果你有一个像"main.out -one.txt-two.txt tree.txt这样的程序调用,你有4个参数。因此argc将是 4argv[0]将是"main.out"argv[1]将是"一个.txt"argv[2]将是"两个.txt"argv[3]将是"树.txt">

相关内容

  • 没有找到相关文章

最新更新