Erro clássico. Normalmente por quem veio de outras linguagens. Em C o compilador não aloca *nada* pra vc. Vc tem que alocar *tudo*.
Vamos ver o código com erro: 1 float pi=3.1415; 2 char *escreve; 3 sprint(escreve,"pi = %f",pi); Na linha 1 vc aloca uma variável do tipo float e já atribui um valor. Na linha 2 vc aloca um _ponteiro_ para um char Na linha 3 vc converte um float em uma notacao legível e coloca no conteúdo de memória apontado pelo ponteiro. Se vc prestar atenção vai perceber que vc não apontou o ponteiro para lugar algum. Portanto ele pode estar apontando para qq lugar na memória. Nesse caso é simplesmente impossĩvel prever oq vai acontecer (em raríssimas condições pode acontecer de funcionar). Solução: Existem duas soluções. Ambas passam por um processo de alocar memória para armazenar o texto convertido. Solução #1 (mais simples) - alocar um array ao invés de um ponteiro 1 float pi = 3.1415; 2 char escreve[10]; 3 sprintf(escreve, "%f", pi); Note que na linha 2 vc está alocando 10 caracteres, e que na linha 2 vc passa o array sem índice, que é equivalente a um ponteiro. Solução #2 (mais complexa e desnecessária) - alocar um ponteiro e alocar memória manualmente 1 float pi = 3.1415; 2 char *escreve; 3 escreve = malloc(10 * sizeof(char)); 4 sprintf(escreve, "%f", pi); 5 free(escreve); Nesta solução vc continua alocando um ponteiro para caracter, mas logo abaixo explicitamente aloca 10 caracteres em memória. Assim vc tem memória alocada e o ponteiro aponta uma posição de memória alocada para uso do programa. Note que depois do comando free vc não pode mais usar o ponteiro escreve como um ponteiro para uma área de memória alocada, e portanto, dependendo da operação, pode causar outro seg-fault. Acho que isso esclarece um pouco. Fabio. P.S.: Sim, eu gostaria muito de dar aulas de C/C++, e estou no Vale do Paraíba. On 4/7/06, Alexandre Brito <[EMAIL PROTECTED]> wrote: > > O difícil é dizer onde não funciona. > > > --- Fernando Morgenstern <[EMAIL PROTECTED]> > escreveu: > > > Me desculpem a pergunta idiota, mas C funciona em > > windows e linux? Ou só linux? > > > > Em 07/04/06, elementar<[EMAIL PROTECTED]> > > escreveu: > > > se você quer aprender a sintaxe, é bom pegar o > > começo. > > > > > > http://www.inf.ufrgs.br/~nmaillard/info1040/c.pdf > > > > > > esse da unicamp é bem legal!!! > > > > > > > > > On 4/7/06, elementar <[EMAIL PROTECTED]> wrote: > > > > > > > > agora está dando falha de segmentação, mas o > > codigo é assim mesmo??? > > > > > > > > float pi=3.1415; > > > > char *escreve; > > > > > > > > sprint(escreve,"pi = %f",pi); > > > > > > > > estou errando nada ou estou??? > > > > > > > > > > > > > > > > On 4/7/06, elementar < [EMAIL PROTECTED]> > > wrote: > > > > > > > > > > obrigado, vou testar o sprintf. > > > > > > > > > > > > > > > > > > > > On 4/6/06, Jakson A. Aquino > > <[EMAIL PROTECTED]> wrote: > > > > > > On Thu, Apr 06, 2006 at 07:23:27PM -0300, > > elementar wrote: > > > > > > > Olá, > > > > > > > > > > > > > > Alguem sabe uma função inversa a "atof", > > que é de string para float, > > > uma de > > > > > > > float para string.??? > > > > > > > > > > > > sprintf(s, "%f", f); > > > > > > > > > > > > Digite no terminal: > > > > > > > > > > > > man sprintf > > > > > > > > > > > > -- > > > > > > Jakson A. Aquino > > > > > > http://distante.dyndns.org:8280/ > > > > > > > > > > > > > > > > > > -- > > > > > > To UNSUBSCRIBE, email to > > > [EMAIL PROTECTED] > > > > > > with a subject of "unsubscribe". Trouble? > > Contact > > > [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > Fernando Marcelo Morgenstern > > > > Programador Web > > > > > > > -- > Alexandre R. Brito > Linux user #279787 [http://counter.li.org/] > [EMAIL PROTECTED] > skype - ale532002 > > > > _______________________________________________________ > Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no celular e > anti-spam realmente eficaz. > http://br.info.mail.yahoo.com/ > > > -- > To UNSUBSCRIBE, email to [EMAIL PROTECTED] > with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED] > > -- Não existem Killer Applications de Código Aberto em Java. Ajude a provar o contrário: http://drupal.gulivap.org/?q=node/106

