einstein Posted October 8, 2012 at 09:15 PM Report #478328 Posted October 8, 2012 at 09:15 PM (edited) Alguem me consegue explicar o que esta linha de codigo faz ? main (int pArgc, char *pArgv[]) { int op = atoi(pArgv[1]); fprintf(stderr, “Memória insuficiente.\n”); /*Aqui o que e este stderr*/ Edited October 8, 2012 at 09:20 PM by pmg falta LP
HappyHippyHippo Posted October 8, 2012 at 09:31 PM Report #478330 Posted October 8, 2012 at 09:31 PM envia a string para o stream de error criada por defeito no lançamento da aplicação. IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Solution pmg Posted October 8, 2012 at 09:32 PM Solution Report #478331 Posted October 8, 2012 at 09:32 PM (edited) Basicamente o "stderr" refere-se ao ecra. Quando chamas um programa compilado, podes redireccionar o input e o output (e os erros tambem). O input, dentro do programa, e identificado pelo stream "stdin" O output, dentro do programa, e identificado pelo stream "stdout" O output de erros, dentro do programa, e identificado pelo stream "stderr" Para fazeres redireccionamento do "stdin" (o inout vem dum ficheiro e nao do teclado) podes usar executavel < stdin.txt Para fazeres redireccionamento do "stdout" (o output vai para um ficheiro e nao para o ecra) podes usar executavel > stdout.txt Para fazeres redireccionamento do "stderr" (o output vai para um ficheiro e nao para o ecra) podes usar (testado em Linux, acho que tambem funciona em Windows) executavel 2> stderr.txt Podes ao mesmo tempo redireccionar os tres streams executavel < stdin.txt > stdout.txt 2> stderr.txt Edited October 8, 2012 at 09:33 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!
einstein Posted October 8, 2012 at 09:39 PM Author Report #478336 Posted October 8, 2012 at 09:39 PM Ah... Já percebi. Obrigado 🙂 Em relação às 2 primeiras linhas o que fazem? A primeira supostamente e o inicio da função main mas que argumentos são aqueles que lá estão dentro? E o que é aquele "atoi"?
pikax Posted October 8, 2012 at 09:42 PM Report #478337 Posted October 8, 2012 at 09:42 PM Em relação às 2 primeiras linhas o que fazem? A primeira supostamente e o inicio da função main mas que argumentos são aqueles que lá estão dentro? E o que é aquele "atoi"? A primeira linha e' a declaracao da main(que deveria ter um int antes do main), os argumentos sao: O primeiro e' o numero de argumentos que sao passados e o segundo e' um array de apontadores que sao os argumentos que sao passados quando arrancas o programa. o atoi e' "ansi to int" "converte" uma string num numero inteiro Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."
pmg Posted October 8, 2012 at 09:50 PM Report #478340 Posted October 8, 2012 at 09:50 PM (edited) Dar os nomes "pArgc" e "pArgv" aos argumentos da funcao main() é bastante esquisito! Toda a gente, desde ha 40 anos, que lhes chama "argc" e "argv". Porque é que has-de fazer diferente? ?!?!?!?! Quando chamas um executavel com parametros, esses parametros chegam ao programa atraves dos argumentos da funcao main. Por exemplo executavel --> argc=1; argv[0]="executavel"; argv[1]=NULL executavel um dois --> argc=3; argv[0]="executavel"; argv[1]="um"; argv[2]="dois"; argv[3]=NULL Edited October 8, 2012 at 09:55 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!
einstein Posted October 9, 2012 at 05:01 PM Author Report #478441 Posted October 9, 2012 at 05:01 PM A primeira linha e' a declaracao da main(que deveria ter um int antes do main), os argumentos sao: O primeiro e' o numero de argumentos que sao passados e o segundo e' um array de apontadores que sao os argumentos que sao passados quando arrancas o programa. o atoi e' "ansi to int" "converte" uma string num numero inteiro Mas só converte a string se ela lá contiver um numero certo? Ou se ela contiver uma palavra também converte? Se converter a palavra o que significa esse inteiro? Dar os nomes "pArgc" e "pArgv" aos argumentos da funcao main() é bastante esquisito! Toda a gente, desde ha 40 anos, que lhes chama "argc" e "argv". Porque é que has-de fazer diferente? ?!?!?!?! Quando chamas um executavel com parametros, esses parametros chegam ao programa atraves dos argumentos da funcao main. Por exemplo executavel --> argc=1; argv[0]="executavel"; argv[1]=NULL executavel um dois --> argc=3; argv[0]="executavel"; argv[1]="um"; argv[2]="dois"; argv[3]=NULL Ok, também achei um pouco estranho aquela designação secalhar é engano :S.
HappyHippyHippo Posted October 9, 2012 at 05:12 PM Report #478443 Posted October 9, 2012 at 05:12 PM Mas só converte a string se ela lá contiver um numero certo? Ou se ela contiver uma palavra também converte? Se converter a palavra o que significa esse inteiro? http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/ IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
pmg Posted October 9, 2012 at 05:14 PM Report #478446 Posted October 9, 2012 at 05:14 PM (edited) Mas [a funcao atoi()] só converte a string se ela lá contiver um numero certo? Ou se ela contiver uma palavra também converte? Se converter a palavra o que significa esse inteiro? A funcao atoi() nao detecta erros; por isso nao e aconselhavel usa-la. A funcao que a substitui e que detecta erros e a strtol(). ~~~~~~~~ Para experimentar, corri este programa #include <errno.h> #include <stdio.h> #include <stdlib.h> int main(void) { int i; errno = 0; i = atoi("0"); printf("atoi(\"0\") returns %d (and sets errno to %d)\n", i, errno); errno = 0; i = atoi("-0"); printf("atoi(\"-0\") returns %d (and sets errno to %d)\n", i, errno); errno = 0; i = atoi("999999999999"); printf("atoi(\"999999999999\") returns %d (and sets errno to %d)\n", i, errno); errno = 0; i = atoi("-999999999999"); printf("atoi(\"-999999999999\") returns %d (and sets errno to %d)\n", i, errno); errno = 0; i = atoi("foobar"); printf("atoi(\"foobar\") returns %d (and sets errno to %d)\n", i, errno); errno = 0; i = atoi("-foobar"); printf("atoi(\"-foobar\") returns %d (and sets errno to %d)\n", i, errno); return 0; } e obive este output atoi("0") returns 0 (and sets errno to 0) atoi("-0") returns 0 (and sets errno to 0) atoi("999999999999") returns -727379969 (and sets errno to 0) atoi("-999999999999") returns 727379969 (and sets errno to 0) atoi("foobar") returns 0 (and sets errno to 0) atoi("-foobar") returns 0 (and sets errno to 0) Edited October 9, 2012 at 05:22 PM by pmg adicionei exemplo 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!
KTachyon Posted October 9, 2012 at 05:14 PM Report #478447 Posted October 9, 2012 at 05:14 PM Só uma correcção: o atoi e' "ansi to int" "converte" uma string num numero inteiro É ASCII to integer. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare
pmg Posted October 9, 2012 at 05:24 PM Report #478451 Posted October 9, 2012 at 05:24 PM (edited) o atoi e' "ansi to int" É ASCII to integer. e' string (ou alpha, se prefirerem) to int: quando executado numa maquina com EBCDIC tambem funciona como esperado 🙂 Edited October 9, 2012 at 05:25 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