2
My reading has been established to the comma, but he’s reading the whole field to the end of the line when reading the string. The code is read correctly, but only in the code.
#include <stdio.h>
#include <string.h>
struct setorEletronicos {
int codigo;
char descricao[100];
int altura;
int largura;
int profundidade;
float preco;
int estoque;
char cor[100];
} ;
int main() {
int i = 0;
FILE *arquivo;
struct setorEletronicos eletro[50];
if ((arquivo = fopen("eletro.txt", "r")) == NULL) {
printf("Erro ao abrir o arquivo.\n");
} else {
while (!feof(arquivo)) {
fscanf(arquivo, "%d[^,]", &eletro[i].codigo);
fscanf(arquivo, "%s[^,]", eletro[i].descricao);
fscanf(arquivo, "%d[^,]", &eletro[i].altura);
fscanf(arquivo, "%d[^,]", &eletro[i].largura);
fscanf(arquivo, "%d[^,]", &eletro[i].profundidade);
fscanf(arquivo, "%f[^,]", &eletro[i].preco);
fscanf(arquivo, "%d[^,]", &eletro[i].estoque);
fscanf(arquivo, "%s[^\n]", eletro[i].cor);
i++;
}
fclose(arquivo);
}
int aux;
for (aux = 0; aux < i; aux++) {
printf("%d \n", eletro[aux].codigo);
printf("%s \n\n", eletro[aux].descricao);
}
return (0);
}
electro.txt file
100,Geladeira,180,90,89,1200.00,4,branca
101,Geladeira,180,90,89,1200.00,2,prata
102,Aspirador,30,50,60,149.99,5,vermelho
103,Aspirador,30,50,60,149.99,3,azul
104,Ar Condicionado 18000BTU,50,100,40,2967.00,13,branco
105,Ar Condicionado 9000BTU,50,80,40,1299.00,10,branco
106,TV LCD 42,80,110,15,2500.00,25,preto
105,Forno Eletrico com Microondas,39.2,52.7,0.48,1688.39,7,prata
106,Lavadora de Roupas 1Kg,46,32,32.9,435.00,1,branco
107,Lavadora de Roupas 10Kg,146,70,72.5,959.00,2,branco
108,Radio CD MP3,12.2,34.1,23.6,199.99,100,preto
109,Antena de TV Externa,16.2,118.5,6.5,199.00,5,cinza
110,TV 29 Slim,70,85,65,599.99,3,preta
possible duplicate of Read comma-separated file data in C
– Lucas Lima