Ajuda em C...

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

Ajuda em C...

Mensagempor jp23 » Domingo Jun 24, 2007 20:29

Estou a fazer um programa em c cujo objectivo é ler um ficheiro de texto, criar um novo ficheiro de texto,
e copiar o conteúdo do ficheiro antigo para o novo mas transformando as vogais em dígitos. Isto utilizando as funções do sistema unix.

A dificuldade (por enquanto) é que o programa não está a entrar no ciclo while para mostrar o conteúdo do ficheiro.
Já agora vejam também se deve ser usada a função atoi para converter as letras em números....

Código:

#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <stdio.h>
#include <fcntl.h>
#define MAXBUFSIZE 256

int main(void)
{
int fd, df, n, s;
char *a = "1";
char *e = "2";
char *i = "3";
char *o = "4";
char *u = "5";
char buffer[MAXBUFSIZE];

//lê o ficheiro file.txt
fd = open("file.txt", O_WRONLY);
//mostra o conteúdo do ficheiro file.txt
while (( n = read(fd, buffer, MAXBUFSIZE)) != EOF)
{
write(STDOUT_FILENO, buffer, n);
printf("??");
}
//conversão da letra em número
s = atoi(a); /* i = 1 */
s = atoi(e); /* f = 2 */
s = atoi(i); /* i = 3 */
s = atoi(o); /* i = 4 */
s = atoi(u); /* i = 5 */

//cria ficheiro file2.txt
df = open("file2.txt", O_CREAT);
//Falta função para copiar o conteúdo do ficheiro file.txt para o ficheiro //file2.txt

//fecha os ficheiros
close(fd);
close(df);
getch();
return 0;
}

Ainda tá numa fase experimental...
"Remember, remember, the 5th of November

Gunpowder, treason and plot;

I know of no reason, why the gunpowder treason
Should ever be forgot."
jp23
Membro de Prata
Membro de Prata
 
Mensagens: 196
Registado: Domingo Abr 17, 2005 20:40
Localização: Computador

Mensagempor CoolMaster » Domingo Jun 24, 2007 23:46

Nesta fase aconselho-te a usares o fopen e não o open, o fopen abre-te um file pointer, enquanto o open abre-te um file descriptor. Nesta fase de iniciamento penso que o fopen (e funções correspondentes para leitura/escrita) seja mais simples.

Quanto ao problema em si, é bastante simples e não precisas de guardar dados nenhuns em memoria.
Abres 1 ficheiro para leitura e outro para escrita.
Se usares o fopen(), tens uma função que te indica se estas no fim do ficheiro (EOF), a função é o feof(), só tens que dar o file pointer como argumento.
O loop ficaria algo do genero
while (!feof(filep))

Dentro do loop só tens que ler caracter ( fgetc(filep) ) a caracter do filep, ou seja, a cada iteração só lês um caracter. Verificas se o caracter é vogal, se for substituis pelo nº correspondente (até podes fazer uma função para isto)
senão for mantens o caracter, após esta verificação escreves ( fputc(caracter, filep_destino) ) no ficheiro de destino esse caracter.

No final, fechas os ficheiros com o fclose(file_pointer) e ta feito.
CoolMaster
Membro de Prata
Membro de Prata
 
Mensagens: 137
Registado: Segunda Dez 25, 2006 0:54
Localização: Porto

Mensagempor jp23 » Segunda Jun 25, 2007 15:14

Pois mas não devo usar pointers, devo usar descritores. De qualquer das formas já tá feito. Obrigado
"Remember, remember, the 5th of November

Gunpowder, treason and plot;

I know of no reason, why the gunpowder treason
Should ever be forgot."
jp23
Membro de Prata
Membro de Prata
 
Mensagens: 196
Registado: Domingo Abr 17, 2005 20:40
Localização: Computador


Voltar para Programação

Quem está ligado:

Utilizadores a ver este Fórum: Nenhum utilizador registado e 2 visitantes

cron