Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2015, 02:48   #1
nicka_96
Новичок
Джуниор
 
Регистрация: 02.12.2015
Сообщений: 1
По умолчанию Программа записывет байты чисел, а нужны сами числа

Программа должна записать значения переменных a, b, c в test.txt, и потом программа должна "узять" эти числа с файла для обчисления периметра треугольника. Но программа останавливает своё действие после ввода значения с, а в файле остаются их символы.
Сам код программмы:

Код:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
int main(void)
{
 
    setlocale(LC_ALL, "Rus");
    int a, b, c, P;
    FILE *file;
    int *d = malloc(sizeof(int) * 20);
    int *e = malloc(sizeof(int) * 20);
    int *f = malloc(sizeof(int) * 20);
 
    printf("Введи сторону a: ");
    scanf("%i", &a);
    printf("Введи сторону b: ");
    scanf("%i", &b);
    printf("Введи сторону c: ");
    scanf("%i", &c);
 
    if ((file = fopen("test.txt", "w")) == NULL)
    {
        printf("Файл не возможно открыть или создать\n");
        exit(1);
    }
 
    sprintf(d, "%i", a);
    fwrite(d, sizeof(int), 1, file);
    sprintf(e, "%i", b);
    fwrite(e, sizeof(int), 1, file);
    sprintf(f, "%i", c);
    fwrite(f, sizeof(int), 1, file);
    rewind(file);
    fclose(file);
 
    file = fopen("test.txt", "r");
    fread(d, sizeof(int), 1, file);
    fread(e, sizeof(int), 1, file);
    fread(f, sizeof(int), 1, file);
 
    P = d + e + f;
    printf("Периметр треугольника%i", &P);
    fclose(file);
 
    free(d);
    free(e);
    free(f);
 
    getch();
    return 0;
}
nicka_96 вне форума Ответить с цитированием
Старый 02.12.2015, 06:41   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Но программа останавливает своё действие после ввода значения с, а в файле остаются их символы.
Так и должно быть. Вы записываете в файл числа так, как они отображаются в памяти компа, т.е. в бинарном формате (не важно, что файл имеет расширение txt, ей это по-барабану). Для того, что-бы числа записывались правильно, сначала нужно перевести их в строковый формат.
При считывании, сделать обратное преобразование.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 02.12.2015, 10:59   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Для того, что-бы числа записывались правильно, сначала нужно перевести их в строковый формат.
Автору хватит и
Код:
fprintf(file,"%d %d %d",d,e,f);
Вместо его трех fwrite().
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана непустая последовательность целых чисел. Найти: Сумму чисел, больших числа x и количество всех чётных чисел maksim97maksim Паскаль, Turbo Pascal, PascalABC.NET 1 09.04.2014 13:59
программа, вычисляющая разность квадратов двух чисел и возводящая сами числа в четвертую степень. (С) Ольга790 Помощь студентам 2 26.12.2011 08:46
Разделение числа на байты jellew Общие вопросы C/C++ 4 29.07.2011 02:18
программа отвечающая правда ли что среди чисел имеются отрицательные числа D1zz1 Паскаль, Turbo Pascal, PascalABC.NET 3 07.06.2011 08:00
Паскаль.Программа для нахождения чисел квадрата трёхзначного числа. vmilyoshin Помощь студентам 4 23.04.2010 13:25