tugabit 0 Denunciar mensagem Publicado 2 de Maio de 2010 Boas, estou aqui com um pequeno problema, tem a ver com o argv e a comparar o mesmo a uma string constante int main(int argc, char **argv[]) { // se argv[1] = admin vai para a interface de administracao if (argv[1] == "admin") { //nunca faz isto, nao sei porque, eu meto ./nomedoprograma admin e nunca faz funcionarios(); } else if (argc == 1) { //continua } else { printf("|%s| - %d", argv[1], argc); //ver o que errei printf("Erro!\nPrograma mal iniciado, para ir para a interface de Funcionarios use a flag admin\nPara ir para a interface de cliente nao use flags\n"); return 1; //retorna uma execucao nao esperada } //codigo do programa aqui [sub][/sub] return 0; } não faço ideia onde está o problema, visto que não dá erros de compilação e os tipos são os mesmos talvez seja por programar em linguagens que requerem menos atenção a este tipo de pormenores, que não esteja a ver o problema :\ Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
Localhost 3 Denunciar mensagem Publicado 2 de Maio de 2010 Para comparares strings tens de usar a função strcmp. here since 2009 Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
IceBrain 1 Denunciar mensagem Publicado 3 de Maio de 2010 Para mais informações, a Wiki tem uma página decente sobre strings em C: http://wiki.portugal-a-programar.org/c:strings By the way, devias verificar primeiro se o argc é igual a 2 antes de usares o valor de argv[1], pois se o utilizador não tiver introduzido nenhum argumento, a memória na posição argv[1] não é válida, e pode até dar um Segmentation Fault (acesso a uma posição de memória a que o processo não tem permissões). Podes fazer simplesmente "if ( argv >= 2 && strcmp(argv[1], "admin") == 0)", visto que se a primeira condição falhar, a segunda já não é verificada. ❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents A list of command line apps Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites