[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: programação em C



On Thu, Jul 05, 2001 at 02:42:34AM -0300, Death Angel wrote:
> ola, agradeço a atenção em relação a msg anterior.
> 
>  como ja disse comecei a estudar linguagem C, e logo no começo
> do livro encontrei um programa que naum funciona, o livro eh
> "C A linguagem de programação" de Brian W. Kernighan & Dennis M. Ritchie, se
> naum  for um bom livro me avisem.

Bem, estou com um livro igual a esse, ele não é ruim, apenas meio desatualizado, e de inicio como o próprio autor diz um pouco complexo, mas apartir do Cap. II fica mais amigavel(pois o primeiro faz uma abordagem geral do C).

Se servir de sugestão comece por:
http://ead1.eee.ufmg.br/cursos/C/
É bem interessante esse curso, para iniciantes em C, e aborda Linux.
> 
> o prama eh minusculo, como ja foi dito o erro foi no começo do livro
> ele conta caracteres.
> 
> /*aqui esta o fonte*/
> 
> main ()
> {
>     long nc;
> 
>     nc = 0;
>     while (getchar () != EOF)
>         ++ nc
>     printf ("%|d\n", nc);
> }
> 

Quanto a código acima, podem estar ocorrendo dois erros:
1o - falta um ;(ponto e virgula) depois do ++ nc,  entre o ++ e o nc tem um espaço e vc está usando um i maiusculo(I) ao inves de um l minusculo(l), pois o l é de long da qual vc declarou a variavel nc.  
- O correto seria:
++nc;
printf ("%ld\n", nc);

2o - (mas como o erro anterior nao ocorre no livro, acredito que vc tenho cometido na hora de enviar o mail para lista), pode ser o seguinte (O qual tive aqui).
 - Na hoara de compilar aparece a seguinte msg:
 mello@axl:~/programacao/learn$ gcc teste.c 
 teste.c: In function `main':
 teste.c:6: `EOF' undeclared (first use in this function)
 teste.c:6: (Each undeclared identifier is reported only once
 teste.c:6: for each function it appears in.)

 O compilador informa que 'EOF' nao foi declarado.
 O 'EOF' indica o fim de arquivo, e ele faz parte do cabecalho 'stdio.h', o qual o autor nao declara (nao sei pq). Isso ocorre em todos os exemplos do livro, por isso achei o mesmo desatualizado.
 Tudo bem, mas para resolver o problema basta incluir o cabeçalho 'stdio.h' no inicio do programa, e no final o código correto ficaria assim:
 
#include <stdio.h>
main ()
{
	long nc;

	nc = 0;
	while (getchar () != EOF)
		++nc;
		printf ("%ld\n", nc);
}

 PS: Depois de executar o programa, use CTRL+D para terminalo, assim o 'EOF' passa a ser verdadeiro e é terminado o whlile.

> eh acho que receberei uma resposta logo, visto que o programa eh
> muito simples.
Espero nao ter demorado :).
> 
> muito obrigado pela ajuda.
> 
Se valer, de nada!
> 

> 
> 
> --  
> To UNSUBSCRIBE, email to debian-user-portuguese-request@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
> 



Reply to: