Duvida em C

bustelo disse:
Viva surgiu-me outra duvida...

[codigo]
struct livro{
char titulo[100];
char subtitulo[100];
char autor[50];
char editora[20];
char genero[20];
int ano_ed;
int edicao;

}livros[100];

for(i=1;1<=4;i++){
printf("Introduzir titulo, %i\n",i);
gets(livros.titulo);

}

Nesse exemplo vou inserir o titulo de 4 livros!
Se quisesse apagar o titulo 2 por exemplo como faria para os titulos decrementarem uma posicao

Expemplo

titulo 1 - a
titulo 2 - b
titulo 3 - c
titulo 4 - d

ao eliminar o dois queria que ficasse o seguinte:

titulo 1 - a
titulo 2 - c
titulo 3 - d

Desculpem a minha ignorancia mas na sei mt de C alias sem muito pouco thanks

se alguem me conseguir fornecer o codigo agradecia

:)


Ninguem me consegue ajudar? E urgente por favor!
 
A soluçao que apresentaste estava correcta mas... faz antes assim.

if (((strlen(alunos.turma) == 1) && ((alunos.turma[0] >= 'A') && (alunos.turma[0] <= 'Z')))
// se o tamanho da string for igual a um (é só um caracter) e o primeiro caracter
// for maior ou igual a 'A' e menor ou igual a 'Z'
{
// turma correcta
}
else
{
// turma errada
}


Antes de mais para perceberes melhor as funçoes:
1. strcmp() - compara strings e nao caracteres como queres fazer.
2. strlen() - dá o numero de caracteres.

-----------------------------------------------------------------------------------------

Para resolver a ultima duvida podes fazer, por exemplo, se o tamanho do titulo for diferente de 0 o livro é valido se for maior que zero e valido, desta maneira nao necessitas de eliminar livros.

if (strlen(livros.titulo) != 0)
{
// livro valido
}
else
{
// livro invalido
}

// para invalidares um livro fazes
livros.titulo[0] = 0;


Espero ter ajudado.
 
Ainda sobre a validação das datas, falou-se na comparação de strings, mas deixava aqui mais uma sugestão que também terá certamente as suas vantagens e inconvenientes e que poderá ser discutida.

Código:
#include <stdio.h>

int main()
{
	int day;
	int month;
	int year;

	printf("Insira uma data: ");
	scanf("%2d-%2d-%4d", &day, &month, &year);
	printf("Day %d, Month %d, Year %d\n", day, month, year);
}
 
Agora estou a acabar o meu trabalho (entragar esta semana) tenho que guardar os dados de uma estrutura (ja apresentada em cima) num ficheiro.

Como faço isso?

Nao percebo nada de ficheiros... ajudem-me.... obrigado
 
Usar ficheiros

Para abrires/criares um ficheiro usas a funçao fopen().
Para leres/escreveres para um ficheiro usas as funçoes fread()/fwrite().
Para fechares um ficheiro usas a funçao fclose().

Exemplos:

Para criar/abrir um ficheiro:

FILE *Ficheiro; // Varivel necessaria para ficheiros

Ficheiro = fopen("nome de ficheiro.extensao","argumento");
/*
1º argumento (string) é o nome do ficheiro (obviamente)
2º argumento (string) é 'diz' a maneira como abres/crias o ficheiro, que pode ser:
- "r" -> abre o ficheiro para ler apenas, o ficheiro tem que existir já.
- "w" -> abre o ficheiro para escrever apenas, o ficheiro se existir os seus conteudos são apagados, senao cria um ficheiro novo.
- existem mais mas se nao percebes nada de ficheiros estas chegam perfeitamente para a quilo que queres.
*/

Para ler/escrever para um ficheiro:

FILE *Ficheiro; // Varivel necessaria para ficheiros

struct Estrutura
{
// - TODO
}

fread(&Estrutura, 1, sizeof(Estrutura), Ficheiro);
fwrite(&SEstrutura, 1, sizeof(Estrutura), Ficheiro);

/*
fread -> le ficheiros
fwrite -> escreve para ficheiros

1º argumento -> ponteiro para aquilo que queres gravar.
2º argumento -> tamanho do objecto
3º argumento -> numero de opbjectos
4º argumento -> Ficheiro para o qual queres escrever/ler.
*/

Para fechar um ficheiro:

fclose(Ficheiro);

/*
Sempre que acabas de fazer aquilo que querias fazer ao ficheiro tens que fechar
o ficheiro.
*/


Espero ter ajudado.
 
Back
Topo