Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Tenarius
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 25
1

Не могу понять функцию fwrite()

10.05.2017, 14:54. Просмотров 334. Ответов 9
Метки нет (Все метки)

Приветствую всех! Прошу объяснить почему при записи на файл структуру выходит только надпись Hello и вместо цифр и пробелов символы?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdlib.h>
#include <stdio.h>
 
struct pbooks
{
    int str;
    char ch[10];
    double lok; 
};
 
int main(int argc, char **argv)
{
    FILE *fp;
    
    struct pbooks sr = {1, "Hello", 12.5};
    
    if((fp = fopen("txt", "wb")) == NULL)
    {
        printf("Error");
        exit(1);
    }
    
 
    fwrite(&sr, sizeof(sr), 1, fp);
 
    fclose(fp);
 
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2017, 14:54
Ответы с готовыми решениями:

Не могу записать буффер в файл через fwrite
Добрый вечер. Пишу одну программку, и никак не получается записать буффер в файл. Файл...

Не могу понять как переделать функцию
Всем привет Есть задание: Выкладываю предыдущее задание : function add(a, b) { var r...

Не могу понять как делать функцию
Дано действительное число A. Для функций, графики которых представлены на рисунке вычислить...

Написать функцию не могу понять этот язык!
Задание такое : ФАМИЛИЯ ИМЯ ОТЧЕСТВО написано в верхнем регистре. Написать функцию, которая будет...

Не могу понять, как разработать функцию convert_n_to_m(x, n, m)
Разработать функцию convert_n_to_m(x, n, m), которая принимает 3 аргумента -- целое число (в...

9
LFC
730 / 535 / 416
Регистрация: 17.09.2015
Сообщений: 1,598
10.05.2017, 15:10 2
потому что файл открыт для записи в него бинарных данных - "wb"
0
Tenarius
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 25
10.05.2017, 15:16  [ТС] 3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdlib.h>
#include <stdio.h>
 
struct pbooks
{
    int str;
    char ch[10];
    double lok; 
};
 
int main(int argc, char **argv)
{
    FILE *fp;
    
    struct pbooks sr = {1, "Hello", 12.5};
    
    if((fp = fopen("txt", "w")) == NULL)
    {
        printf("Error");
        exit(1);
    }
    
    rewind(fp);
 
    fwrite(&sr, sizeof(sr), 1, fp);
 
    fclose(fp);
 
    return 0;
}

То же самое выдает.
0
likehood
984 / 828 / 396
Регистрация: 25.12.2016
Сообщений: 2,727
Завершенные тесты: 3
10.05.2017, 15:17 4
Цитата Сообщение от Tenarius Посмотреть сообщение
почему при записи на файл структуру выходит только надпись Hello и вместо цифр и пробелов символы?
Вы файл в блокноте открываете? А что вы тогда ожидали увидеть? Это же двоичный файл, а не текстовый.

Добавлено через 48 секунд
Цитата Сообщение от Tenarius Посмотреть сообщение
То же самое выдает.
Что именно?
0
Tenarius
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 25
10.05.2017, 15:23  [ТС] 5
Я и 'w', 'wb' пробовал.

Добавлено через 1 минуту
Открывал в блокноте

Добавлено через 2 минуты
Hello )@

Добавлено через 1 минуту
На виндусе  Hello )@
0
CoderHuligan
813 / 539 / 201
Регистрация: 30.06.2015
Сообщений: 2,997
Записей в блоге: 13
10.05.2017, 15:24 6
Цитата Сообщение от Tenarius Посмотреть сообщение
Открывал в блокноте
Это надо в FARе или каком-либо hex редакторе открывать))
0
Tenarius
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 25
10.05.2017, 15:24  [ТС] 7
На линуксе тоже самое только вместо пробелов символы ######## и т.д.
0
likehood
984 / 828 / 396
Регистрация: 25.12.2016
Сообщений: 2,727
Завершенные тесты: 3
10.05.2017, 15:27 8
Tenarius, число типа double - это 8 байтов, каждый из которых кодирует какой-то символ. Вот вы и получаете какие-то символы.

Если хотите, чтобы файл был читабельным, используйте форматированный вывод:
C
1
fprintf(fp, "%d %s %g\n", sr.str, sr.ch, sr.lok);
0
Tenarius
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 25
10.05.2017, 15:29  [ТС] 9
Я просто думаю может у меня не правильный код.

Добавлено через 59 секунд
да, с fprintf все идет, но ведь файл нельзя изменить допустим заменить буквы.

Добавлено через 33 секунды
с fwrite структуры удобнее записывать.
0
likehood
984 / 828 / 396
Регистрация: 25.12.2016
Сообщений: 2,727
Завершенные тесты: 3
10.05.2017, 15:34 10
Цитата Сообщение от Tenarius Посмотреть сообщение
файл нельзя изменить допустим заменить буквы.
???
0
10.05.2017, 15:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2017, 15:34

Передача массива в функцию. Не могу понять что не так
Добрый вечер. Помогите, пожалуйста, решить проблему. Задание такое: Дана целочисленная...

Не могу понять как я должен передовать значение в функцию
Ошибка происходит во время вызова функции из основного блока программы. Почему?? struct tex {...

Пытаюсь создать функцию удаления строки. Не могу понять в чём ошибка
function connect() { $connect = mysql_connect('localhost', 'frank', 'delgado') or...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru