Ler string em arquivo e formata-la

1. Ler string em arquivo e formata-la

Henrique Pereira
cretto

(usa Outra)

Enviado em 07/05/2012 - 14:54h

Estou fazendo um codigo para efetuar o login em um sistema, eu crio um arquivo com 3 usuario e depois faço a leitura e na hora de formatar a string ele acaba pegando coisa a mais... se alguem conseguir ver o que estou fazendo de errado ficaria grato... segue o codigo abaixo com duas versoes de formatar a string em comentario:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int inicializar();
int criar_user(char *username, char *password, char *status);
int leitura();

int main() {
char username[20], password[20];
inicializar();
leitura();
return 0;
}

int inicializar(){
FILE *passwd;
//verifica se passwd existe, se nao existir cria e adiciona o user ROOT
if(!(passwd = fopen("passwd.bin", "rb"))){
//testa se o arquivo foi criado
if(!(passwd = fopen("passwd.bin", "ab"))){
printf("Erro no diretorio dos arquivos !");
return 0;
} else {
fclose(passwd);
//escreve o usuario no arquivo
criar_user("root", "root", "1");
criar_user("pedro", "pedro", "1");
criar_user("fernando", "fernando", "1");
}
} else {
fclose(passwd);
}
return 1;
}

int criar_user(char *username, char *password, char *status){
FILE *passwd;
char str[100];
int size;
int i=0;

//teste se o arquivo abre
passwd = fopen("passwd.bin", "a+b");

//formata a string para gravar no arquivo
strcpy(str, "{TEXTO}");
strcat(str, username);
strcat(str, " | ");
strcat(str, password);
strcat(str, " | ");
strcat(str, status);
strcat(str, "\n");
strcat(str, "{TEXTO}");


//pega o tamanho da string
size = strlen(str);

for(i=0; i<=size-1; i++){
fputc(str[i], passwd);
}

fclose(passwd);

return 0;
}

int leitura(){

FILE *passwd;
char str[100], str2[100];
char username[20], password[20], status[1];
char *partes;
int i;

passwd = fopen("passwd.bin", "r+b");

do{
strcpy(str, "{TEXTO}");
strcpy(str2, "{TEXTO}");
strcpy(username, "{TEXTO}");
i=0;

fgets(str, 100, passwd);

strcpy(str2, str);

//Metodo 1

/*
partes = (char*)strtok(str2, " ");//pega username
strcpy(username, partes);
partes = (char*)strtok(NULL, " ");//retorna |
partes = (char*)strtok(NULL, " ");//pega password
strcpy(password, partes);
partes = (char*)strtok(NULL, " ");//retorna |
partes = (char*)strtok(NULL, " ");//pega status
strcpy(status, partes);
strcpy(partes, "{TEXTO}");
*/

//Metodo 2

/*
do{
username[i] = str[i];
i++;
}while(str[i]!='|');

*/
puts(str);
//puts(username);
printf("\n");
}while(!feof(passwd));

fclose(passwd);
return 1;
}


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts