Мой входной файл, содержащий коллекцию товаров в этом формате:
name
price
symbol
Пример файла:
Ball
6.24
u
Я хочу прочитать файл, разобрать текст в struct
ипереписать файл с теми же элементами, но без элементов с символом u
.Это мой код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
struct Product
{
char name[30];
char amount;
double price;
};
int main()
{
FILE * fp;
char * line = NULL;
size_t len = 0;
ssize_t read;
struct Product products[100];
fp = fopen("magazyn.txt", "r+");
if (fp == NULL)
exit(EXIT_FAILURE);
int counter = 0;
int amount = 0;
while ((read = getline(&line, &len, fp)) != -1) {
if (counter != 0 && counter % 3 == 0)
{
counter = 0;
amount++;
}
if (counter % 3 == 0) {
strcpy(products[amount].name, line);
}
if (counter % 3 == 1)
products[amount].price = atof(line);
if (counter % 3 == 2)
products[amount].amount = line[0];
counter++;
}
truncate("magazyn.txt", 0);
for(int i=0; i<amount; i++)
{
if (products[amount].amount != 'u')
{
fprintf(fp, "%s\n%lf\n%c\n",
products[amount].name,
products[amount].price,
products[amount].amount);
}
}
fclose(fp);
if (line)
free(line);
return 0;
}
Почему-то я получаю \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00Ball
.Почему это происходит?