citadp Posted March 26, 2013 at 01:01 PM Report #500448 Posted March 26, 2013 at 01:01 PM Olá! Estou a fazer um programa eu que o utilizador tem que meter várias opções para correr. Se ele puser o comando "copiar ficheiro pasta", aux = strtok (NULL, " "); strcat(funcao," "); strcat(funcao,aux); if (strcmp ( funcao, "copiar ficheiro" ) == 0 ) { pasta = strtok(NULL, "\n"); Estava a fazer isto para ele ver a palavra ficheiro, mas não consigo!
pmg Posted March 26, 2013 at 01:14 PM Report #500449 Posted March 26, 2013 at 01:14 PM Hmmm ... o "ficheiro" não deve ser o nome dum ficheiro existente (ou não) no disco? É sempre a string "ficheiro"? copiar artigo_tres.txt pasta copiar receita_iogurte.pdf receitas Qual foi a string que usaste no primeiro strtok()? Quais foram as alterações anteriores à variavel funcao? Eu suspeito que estás a usar função para duas coisas incompativeis: tanto para o strtok() como para (re-)construires uma string. A função strtok() altera a string inicial. Não podes estar a chamar strtok() e a alterar a string "por fora" ao mesmo tempo ... What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
citadp Posted March 26, 2013 at 01:54 PM Author Report #500455 Posted March 26, 2013 at 01:54 PM Sim, é uma string. Mas se eu fizer o comando, só por exemplo: copiar x ficheiro.txt // copiar 1 vez A minha questão é, como é que eu faço para ele ver o espaço entre o comando copiar e o x. Eu só para o codigo copiar x tinha: funcao = strtok ( input, "\n" ); Ou seja quando houvesse um enter ele fazia o comando copiar x. Agora queria que ele visse o espaço entre copiar e o x, e o x e ficheiro.txt. Não se me estou a fazer entender. Cumps Ana
pmg Posted March 26, 2013 at 03:04 PM Report #500462 Posted March 26, 2013 at 03:04 PM (edited) Podes usar dois ou mais caracteres no strtok() ao mesmo tempo. Imagina que usas os caracteres ESPACO, TAB, e ENTER todos ao mesmo tempo. Podes fazer o teu programa assim? strcpy(input, "ls\n"); strtok(input, " \t\n"); // "ls" strtok(NULL, " \t\n"); // NULL strcpy(input, "ls -l\n"); strtok(input, " \t\n"); // "ls" strtok(NULL, " \t\n"); // "-l" strtok(NULL, " \t\n"); // NULL strcpy(input, "copiar x ficheiro.txt\n"); strtok(input, " \t\n"); // "copiar" strtok(NULL, " \t\n"); // "x" strtok(NULL, " \t\n"); // "ficheiro.txt" strtok(NULL, " \t\n"); // NULL Ou seja, o primeiro strtok() (com a string no primeiro argumento) identifica a primeira palavra, os strtok()s seguintes (com NULL no primeiro argumento) identificam a palavra seguinte ou devolvem NULL caso não hajam mais palavras. Edited March 26, 2013 at 03:05 PM by pmg What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now