这是我在这里的第一个问题,所以如果它不是一个有用的问题,我深表歉意。
我有一个模拟器项目,用户通过命令行使用一些参数调用程序。像,MYPROG [options] filename
。
我需要确保文件名有效,它在哪里(目录)并获取名称以供进一步使用。
以下是部分代码:
char* ExtrairNome(char* alvo){
char* teste = alvo;
char* nome = NULL;
int barras = 0;
while(strcmp(teste, "") != 0){ //look for "/"
if (teste[0] == '/') barras++;
teste++;
}
teste = alvo;
if (barras > 0){
while(barras > 0){ //remove everything leaving the "filename.ias"
if (teste[0] == '/') barras--;
teste++;
}
}
int i = 0;
char aux[strlen(teste) - 4];
while (strcmp(teste, ".ias")){ //remove the ".ias"
aux[i] = teste[0];
teste++;
i++;
}
printf("random %d\n", barras); //this line fixes the bug!!
aux[i] = '\0';
nome = aux;
return nome;
}
此函数接收带有完整文件名的字符串,并且应该只返回名称,没有扩展名或路径。但它只在我在返回之前打印一些变量时才有效。如果我删除该行,则该函数不返回任何内容。我认为这与范围有关,但我不确定。我怎样才能解决这个问题?