Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 43
1

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

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

Author24 — интернет-сервис помощи студентам
Приветствую всех! Прошу объяснить почему при записи на файл структуру выходит только надпись 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2017, 14:54
Ответы с готовыми решениями:

Не могу понять, как доделать функцию
У меня есть функция capitalize, которая получает на вход строку и флаг, если флаг False, то из...

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

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

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

9
737 / 542 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
10.05.2017, 15:10 2
потому что файл открыт для записи в него бинарных данных - "wb"
0
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 43
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
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
10.05.2017, 15:17 4
Цитата Сообщение от Tenarius Посмотреть сообщение
почему при записи на файл структуру выходит только надпись Hello и вместо цифр и пробелов символы?
Вы файл в блокноте открываете? А что вы тогда ожидали увидеть? Это же двоичный файл, а не текстовый.

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

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

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

Добавлено через 1 минуту
На виндусе  Hello )@
0
1287 / 880 / 254
Регистрация: 30.06.2015
Сообщений: 4,595
Записей в блоге: 51
10.05.2017, 15:24 6
Цитата Сообщение от Tenarius Посмотреть сообщение
Открывал в блокноте
Это надо в FARе или каком-либо hex редакторе открывать))
0
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 43
10.05.2017, 15:24  [ТС] 7
На линуксе тоже самое только вместо пробелов символы ######## и т.д.
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
10.05.2017, 15:27 8
Tenarius, число типа double - это 8 байтов, каждый из которых кодирует какой-то символ. Вот вы и получаете какие-то символы.

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

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

Добавлено через 33 секунды
с fwrite структуры удобнее записывать.
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
10.05.2017, 15:34 10
Цитата Сообщение от Tenarius Посмотреть сообщение
файл нельзя изменить допустим заменить буквы.
???
0
10.05.2017, 15:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.05.2017, 15:34
Помогаю со студенческими работами здесь

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

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

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

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

Не могу понять как мне найти функцию внедряющую в тег определенный стиль
Уважаемые JS программисты, Я в JS профан. Задача воткнуть на сайта слайдер фотогалереи. Заметил что...

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru