/* */ /* LEMBRETES IMPORTANTES DA LINGUAGEM C: */ /* - divisao de inteiros eh inteiro */ /* - divisao de float eh divisao real */ /* - ult caracter de string eh \0 */ /* - strings nao podem ser igualadas, usar strcpy */ /* if (k=w) ... nao eh comparacao */ /* As constantes hexadecimais começam com 0x. As constantes octais começam em 0.*/ #include <stdio.h> #define GRAUS 'G' #define RADIANOS 'R' struct tipo_endereco { char rua[50]; int numero; char bairro[20]; char cidade[30]; char sigla_estado[3]; long int CEP; }; struct ficha_pessoal { char nome[50]; long int telefone; struct tipo_endereco endereco; }; typedef struct ficha_pessoal TFicha; union angulo { float graus; float radianos; }; int main(int argc, char *argv[]) { char str1[100],str2[100]; int size; int mes; char *nomemes [] = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"}; int opcao; int matrixnum[10]; char strings [5][100]; int count; int count2; char Ch; char string[100]; int i, cont,num; float f; int count3=10; int *pt; pt=&count3; int *endereco; int (*endereco_funcao)(const char *); int conteudo[10]; endereco=conteudo; conteudo[0]=0; char *buffer, *tmp1; int *i_buffer, *tmp2; register int fastcount; int slowcount; TFicha ficha; TFicha *pont_ficha; pont_ficha=&ficha; if(argc == 4) /* Testa se o numero de parametros fornecidos esta' correto o primeiro parametro e' o nome do programa, o segundo o dia o terceiro o mes e o quarto os dois ultimos algarismos do ano */ { mes = atoi(argv[2]); /* argv contem strings. A string referente ao mes deve ser transformada em um numero inteiro. A funcao atoi esta sendo usada para isto: recebe a string e transforma no inteiro equivalente */ if (mes<1 || mes>12) /* Testa se o mes e' valido */ printf("Erro!\nUso: data dia mes ano, todos inteiros"); else printf("\n%s de %s de %s\n", argv[1], nomemes[mes-1], argv[3]); } else { printf("Erro!\nUso: data dia mes ano, todos inteiros\n"); } printf("Programacao em C\n"); printf("Uso de while, switch, continue e break\n"); while (opcao != 5) { printf("\n\n Escolha uma opcao entre 1 e 5: "); scanf("%d", &opcao); if ((opcao > 5)||(opcao <1)) continue; /* Opcao invalida: volta ao inicio do loop */ switch (opcao) { case 1: printf("\n --> Primeira opcao.."); break; case 2: printf("\n --> Segunda opcao.."); break; case 3: printf("\n --> Terceira opcao.."); break; case 4: printf("\n --> Quarta opcao.."); break; case 5: printf("\n --> Abandonando.."); break; } } matrixnum[2]=100; printf ("Alocacao de memoria para variaveis\n"); printf ("%d\n",matrixnum[0]); printf ("%d\n",matrixnum[1]); printf ("%d\n",matrixnum[2]); printf ("%d\n",matrixnum[100]); printf ("%d\n",matrixnum[-100]); printf ("\n\nMatrizes de strings\n"); for (count=0;count<5;count++) { printf ("\n\nDigite uma string: "); gets (strings[count]); } printf ("\n\n\nAs strings que voce digitou foram:\n\n"); for (count=0;count<5;count++) printf ("%s\n",strings[count]); printf ("Impressao de variavel char \n\n"); Ch='D'; printf ("%c\n",Ch); printf ("Impressao de string obtida com gets \n\n"); printf ("Digite uma string: "); gets (string); printf ("\n\nVoce digitou %s\n\n",string); printf ("Contagem de caracteres c numa string \n\n"); printf("\n\nDigite uma frase: "); gets(string); /* Le a string */ printf("\n\nFrase digitada:\n%s", string); cont = 0; for (i=0; string[i] != '\0'; i=i+1) { if ( string[i] == 'c' )/* Se for a letra 'c' */ cont = cont +1; /* Incrementa o contador de caracteres */ } printf("\nNumero de caracteres c = %d\n", cont); printf("\nEfeito de modelador (float)\n"); num=10; /* f=(float)num/7; */ f=num/7; printf("\nLoop\n"); for (count=1; count<=50; count++) { printf ("%d",count); for (count2=1; count2<=count;count2++) { printf ("%c",'='); } printf ("\n"); } do { printf("\n======================MENU======================\n"); printf ("\n\nEscolha a fruta pelo numero:\n\n"); printf ("\t(1)...Mamao\n"); printf ("\t(2)...Abacaxi\n"); printf ("\t(3)...Laranja\n\n"); scanf("%d", &i); } while ((i<1)||(i>3)); switch (i) { case 1: printf ("\t\tVoce escolheu Mamao.\n"); break; case 2: printf ("\t\tVoce escolheu Abacaxi.\n"); break; case 3: printf ("\t\tVoce escolheu Laranja.\n"); break; } printf("\nStrings\n"); printf ("Entre com uma string: "); gets (str1); strcpy (str2,"Voce digitou a string "); strcat (str2,str1); /* str2 armazenara' Voce digitou a string + o conteudo de str1 */ printf ("\n\n%s\n",str2); size=strlen (str1); printf ("\n\nA string que voce digitou tem tamanho %d\n\n",size); printf ("Entre com uma string: "); gets (str1); printf ("\n\nEntre com outra string: "); gets (str2); if (strcmp(str1,str2)) printf ("\n\nAs duas strings são diferentes.\n\n"); else printf ("\n\nAs duas strings são iguais.\n\n"); /* operador & obtem o endereco da variavel */ /* operador * obtem o valor apontado pelo endereco */ printf("\nteste de ponteiros 1\n"); printf("\ncount3 -> %d\n",count3); printf("&count3 -> %d\n",&count3); printf("pt -> %d\n",pt); printf("*pt -> %d\n",*pt); printf("\nteste de ponteiros 2\n"); printf("\n%d -> %d\n",endereco,*endereco); endereco++; conteudo[1]=1; printf("\n%d -> %d\n",endereco,*endereco); endereco++; printf("\n%d -> %d\n",endereco,*endereco); endereco_funcao=puts; printf("\nfuncao: %d -> %d\n",endereco_funcao,*endereco_funcao); printf("\nalocacao de memoria\n"); buffer=(char *)malloc(20000*sizeof(char)); i_buffer=(int *)malloc(80000000*sizeof(int)); if(!buffer) { printf("Erro malloc\n"); exit(-1); } if(!i_buffer) { printf("Erro malloc\n"); exit(-1); } tmp1=buffer; tmp2=i_buffer; printf("Endereco inicial de buffer %p\n",tmp1); printf("Endereco inicial de i_buffer %p\n",tmp2); tmp1++; tmp2++; printf("Endereco atual de buffer %p\n",tmp1); printf("Endereco atual de i_buffer %p\n",tmp2); malloc_stats(); free(buffer); free(i_buffer); tmp1=buffer; tmp2=i_buffer; printf("Endereco atual de buffer %p\n",tmp1); printf("Endereco atual de i_buffer %p\n",tmp2); malloc_stats(); printf("\nteste de contador com register\n"); for(fastcount=0;fastcount<100000;fastcount++) { printf ("F");} printf("\nteste de contador sem register\n"); for(slowcount=0;slowcount<100000;slowcount++) { printf ("S");} /* ficha.nome="C";*/ pont_ficha->telefone=1000; printf("\n%s - %f\n",pont_ficha->nome,pont_ficha->telefone); }