Exemplos de Código em C: Registros, Ponteiros, Alocação e Arquivos
Classificado em Grego
Escrito em em
português com um tamanho de 5,7 KB
Exemplos de Código
Registro
#include <stdio.h>
#include <string.h>
#include <conio.h>
#define MEDIA 5
main ()
{
struct reg
{
char cnome [30];
int inota1;
float fnota2;
};
struct reg aluno;
float media;
printf ("\nQual o nome ? ");
scanf ("%s",aluno.cnome);
while (strcmp (aluno.cnome,"fim") != 0)
{
printf ("\nQual a primeira nota ? ");
scanf ("%d",&aluno.inota1);
printf ("\nQual a segunda nota ? ");
scanf ("%f",&aluno.fnota2);
media = (aluno.inota1 + aluno.fnota2) / 2;
printf ("\nComo a media eh %d", MEDIA);
printf ("\n e %s ficou com %6.2f de media :\nEle esta %s",aluno.cnome, media,(media >= MEDIA ? "Aprovado" : "Reprovado"));
printf ("\n \nQual o nome ? ");
scanf ("%s",aluno.cnome);
}
}Ponteiros e Vetores
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define max 10
main()
{
int A [max];
int *p;
randomize;
for (int i = 0; i < max; i++)
{
A [i] = random (100);
}
p = A; // p = &(A [0]);
printf ("\nEndereco inicial do vetor = %p",A);
printf ("\nEndereco do ponteiro p = %p",&p);
printf ("\nEndereco para o qual p aponta = %p",p);
printf ("\nMostrando com for \n");
for (int i = 0; i < max; i++)
{
printf ("%d, ", A [i]);
}
printf ("\nMostrando com ponteiro (endereco_base + deslocamento)\n");
for (int i = 0; i < max; i++)
{
printf ("%d, ",*(p+i));
}
printf ("\nMostrando com ponteiro semelhante a um vetor\n");
for (int i = 0; i < max; i++)
{
printf ("%d, ",p [i]);
}
getch();
}Ponteiro Exemplo 2
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define max 10
main()
{
int A [max];
int *p, *q;
randomize;
for (int i = 0; i < max; i++)
{
A [i] = random (100);
}
p = &(A [max - 1]);
q = &(A [0]); // q = A;
printf ("\nEndereco inicial do vetor = %p",A); // 0065FDC8
printf ("\nEndereco do ponteiro p = %p",&p); // 0065FE00
printf ("\nEndereco para o qual p aponta = %p",p); // 0065FDEC
printf ("\nEndereco do ponteiro q = %p",&q); // 0065FDFC
printf ("\nEndereco para o qual q aponta = %p",q); // 0065FDC8
printf ("\n p - q = %d",p-q); // 9 inteiros
// 0065FDEC - 0065FDC8 = 24h = 36d = 9 inteiros
printf ("\nMostrando com for \n");
for (int i = 0; i < max; i++)
{
printf ("%d, ", A [i]);
}
printf ("\nMostrando com ponteiro de um extremo a outro \n");
for (int i = 0; i < max; i++)
{
printf ("[%d, %d], ",*(q),*(p));
p = p - 1; // p--
q = q + 1; // q++
}
getch();
}Alocação Dinâmica
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int criarvetor (int n);
void lervetor (int n);
void mostrarvetor (int n);
int *idades; // ponteiro utilizado na alocação
int criarvetor (int n)
{
int result = 1;
idades = (int *) malloc ((n) * sizeof(int)); // alocação
if (idades == NULL)
{
printf ("\nErro reservando memoria");
result = 0;
}
return result;
}
void lervetor (int n)
{
int *cont = idades;
for (int i = 0; i < n; i++)
{
printf ("\nDigite o elemento %d ", i + 1);
scanf ("%d", cont++);
}
}
void mostrarvetor (int n)
{
int *cont = idades;
for (int i = 0; i < n; i++)
{
printf ("\nO elemento %d eh %d ", i + 1, *cont++);
}
}
main()
{
int n;
printf ("\nQuantas idades deseja cadastrar ? ");
scanf ("%d", &n);
if (criarvetor(n))
{
lervetor(n);
mostrarvetor(n);
getch();
free (idades); // Liberar memória alocada
}
}Arquivos
Abrir para Gravação
#include <stdio.h>
#include <conio.h>
main()
{
FILE *fout;
fout = fopen ("teste.txt", "w");
// Conteúdo de teste.txt é destruído
if (fout == NULL)
{
printf ("Erro ao abrir arquivo para gravacao\n");
}
else
{
printf ("O arquivo foi aberto para gravacao\n");
fprintf (fout, "Isto é escrito em teste.txt\n");
fclose (fout);
}
printf ("Pressione uma tecla para terminar\n");
getch();
}Somente Leitura e Depois Gravação
#include <stdio.h>
#include <conio.h>
main()
{
FILE *fout, *fin;
fin = fopen ("teste.txt", "r");
if (fin == NULL)
{
printf ("Erro ao abrir arquivo para leitura\n");
}
else
{
printf ("O arquivo foi aberto para leitura\n");
fclose (fin);
}
fout = fopen ("teste.txt", "w");
// Conteúdo de teste.txt é destruído
if (fout == NULL)
{
printf ("Erro ao abrir arquivo para gravacao\n");
}
else
{
printf ("O arquivo foi aberto para gravacao\n");
fprintf (fout, "Isto é escrito em teste.txt\n");
fclose (fout);
}
printf ("Pressione uma tecla para terminar\n");
getch();
}Abrir Arquivo e Ler Valores Float
#include <stdio.h>
#include <conio.h>
main()
{
// Exemplo de uso de fscanf
// Leitura de dados float de um arquivo
FILE *fin;
float fdados;
fin = fopen ("Floats.txt", "r");
if (fin == NULL)
{
printf ("Erro ao abrir arquivo para leitura\n");
}
else
{
while (fscanf (fin, "%f", &fdados) != EOF)
{
printf ("\n%6.2f", fdados);
}
fclose (fin);
}
getch();
}