【发布时间】:2014-03-05 12:11:17
【问题描述】:
我在尝试将目录路径传递给我在 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。
感谢您的耐心等待。
--编辑--
我根据下面的 cmets 对项目的参数进行了更改,endtimes 正在存储正确的文件路径:/home/vitor/Área de Trabalho/Programação/Teste/times.txt 但我仍然得到Error trying to open file. 文件路径是否应该不同,因为我使用的是 Ubuntu 13?
【问题讨论】:
-
argv[]从 0 开始索引,从 process 参数开始,然后是 1 处的第一个命令行参数。那些2在里面做什么?有效范围是0...(argc-1)您使用的路径是否已经存在?fopen不会为你创建它。 -
在
strcpy(endjogos, argv[2]);这一行之后,添加:printf(argv[2]);。您的路径名已嵌入空格,您很可能需要将路径用单引号或双引号引起来。 print 语句会让你知道实际使用的是什么路径。 -
您通过该编辑从根本上改变了它。你的真实代码是哪个?
-
我同意大卫 (+1)。如果您有带有嵌入空格的长文件名,则需要在以 arg 形式出现时对名称进行双引号。
-
该程序只是应该在目录路径的末尾添加文件名
times.txt、jogos.txt和apostas.txt,因此,例如,endjogos将类似于 @ 987654339@
标签: c file netbeans-7 main ubuntu-13.10