0

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

/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?

4

2 回答 2

0

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]

于 2014-02-07T22:11:42.813 回答
0

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

于 2014-02-07T23:09:38.360 回答