Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с потоками в С 
V
    Опции темы
m9yt
Дата 14.4.2010, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 27.2.2010

Репутация: нет
Всего: нет



В общем у меня такая проблема-неудачная запись в файл.
Пример:

Код

#include<iostream>
#include <cstdio>
using namespace std;
struct student
{
    string family;
    int year;
};

void main
{
student a;
a.family="Ivanov";
a.year=29;     
FILE *f;
f=fopen("myfile.txt", "wb"); 
fwrite(&a,sizeof(student),1,f);
fclose(f);
}


После выполнения программы создается файл со всякими кракозябрами. 

Это сообщение отредактировал(а) m9yt - 14.4.2010, 13:33
PM MAIL   Вверх
azesmcar
Дата 14.4.2010, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата

Проблемы с потоками в С

Вот и верь после этого наружной рекламе smile где обещанные потоки?

Цитата(m9yt @  14.4.2010,  13:09 Найти цитируемый пост)
После выполнения программы создается файл со всякими кракозябрами.  

ну и что, а ты хотел бинарные данные в notepad увидеть?

PM   Вверх
m9yt
Дата 14.4.2010, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 27.2.2010

Репутация: нет
Всего: нет



У нас лаба такая.Как я буду выполнять удаление элементов, если я даже не вижу их отображение.
2 часть лабы-потоки в С++-такой проблемы не возникает.
PM MAIL   Вверх
InvalidProperty
Дата 14.4.2010, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 356
Регистрация: 31.10.2007
Где: Россия, Казань

Репутация: 2
Всего: 9



проблемы не только "с потоками", но и еще с пониманием вопроса. ИМХО, тема "проблема с потоками" подразумевает под собой проблему не с потоками ввода/вывода, а с потоками, как с системными объектами, которые являются частью процесса, конкурируют за ресурсы и время исполнения и выполняются в рамках одного процесса.

Косательно твоего вопроса. Что ты понимаешь под "кракозябрами"? число 29 запишется как int, а 29 это вполне себе такой читаемый кракозябный символ, на сколько я помню. Что тебя не устраивает?

Добавлено через 2 минуты и 24 секунды
может все-таки ты перепутал курсы? Если ты уверен, что тебе это все-таки нужно, то предлагаю начать с того, чтобы найти инофрмацию, что такое бинарные данные и с чем их едят. Второе, предлагаю запустить Студию от МС и в отладчике посмотреть, что тебе в файл запишется/прочитается.


--------------------
dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null
dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null
echo $0 >> $0
PM MAIL ICQ Jabber   Вверх
azesmcar
Дата 14.4.2010, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(m9yt @  14.4.2010,  13:17 Найти цитируемый пост)
У нас лаба такая.Как я буду выполнять удаление элементов, если я даже не вижу их отображение.

зависит от того, как ты смотришь..повторюсь, если notepad-ом то не увидишь..посмотри любым hex viewer-ом..в Visual Studio есть такая возможность, или скачай из интернета, их там полно.
PM   Вверх
m9yt
Дата 14.4.2010, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 27.2.2010

Репутация: нет
Всего: нет



InvalidProperty, просто в текстовике вижу типа такого: NUL NUL ....и т.д..кусок моей строки...и т.д.
PM MAIL   Вверх
azesmcar
Дата 14.4.2010, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



m9yt

Повторяю, ты смотришь бинарные данные текстовым редактором. 
PM   Вверх
m9yt
Дата 14.4.2010, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 27.2.2010

Репутация: нет
Всего: нет



azesmcar, спасибо, я разобрался, что так я ничего не увижу.думаю, нужно другую функцию для записи применить, fprintf например...
PM MAIL   Вверх
azesmcar
Дата 14.4.2010, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(m9yt @  14.4.2010,  13:35 Найти цитируемый пост)
azesmcar, спасибо, я разобрался, что так я ничего не увижу.думаю, нужно другую функцию для записи применить, fprintf например... 

Ты для начала разберись что тебе нужно сделать. Тебе файл в бинарном виде нужен или в текстовом? В каком виде ты хочешь хранить данные? В каком виде ты их хочешь увидеть в файле?
PM   Вверх
m9yt
Дата 14.4.2010, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 27.2.2010

Репутация: нет
Всего: нет



Цитата(azesmcar @ 14.4.2010,  13:39)
Цитата(m9yt @  14.4.2010,  13:35 Найти цитируемый пост)
azesmcar, спасибо, я разобрался, что так я ничего не увижу.думаю, нужно другую функцию для записи применить, fprintf например... 

Ты для начала разберись что тебе нужно сделать. Тебе файл в бинарном виде нужен или в текстовом? В каком виде ты хочешь хранить данные? В каком виде ты их хочешь увидеть в файле?

Нужно хранить в текстовом файле и видеть как текст.
PM MAIL   Вверх
azesmcar
Дата 14.4.2010, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



m9yt

На си или на C++, вижу в заголовке написано Си, но программа у тебя на C++ написана, во всяком случае первые 3 строчки.
PM   Вверх
Ozerich
Дата 14.4.2010, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 2.8.2009
Где: Минск, Беларусь

Репутация: 4
Всего: 5



У тебя С++ используется, а не С.
Вот рабочий код на С.

Код

#include "stdio.h"

struct student
{
    char * family;
    int year;
};

void main()
{
    student a;
    a.family=" Ivanov";
    a.year=29;     
    FILE *f;
    f=fopen("myfile.txt", "wb"); 
    fprintf(f,"%d %s", a.year, a.family);
    fclose(f);
}




Это сообщение отредактировал(а) Ozerich - 14.4.2010, 13:58
--------------------
C++(STL) / DHTML(CSS) / Javascript / PHP  Developer
PM MAIL ICQ Skype   Вверх
m9yt
Дата 14.4.2010, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 27.2.2010

Репутация: нет
Всего: нет



Цитата(azesmcar @ 14.4.2010,  13:45)
m9yt

На си или на C++, вижу в заголовке написано Си, но программа у тебя на C++ написана, во всяком случае первые 3 строчки.

Мне не важно, на коком языке написано все остальное.Главное, применить функции из С для чтения\записи файлов.Остальные функции я могу и на С++ написать.

Добавлено через 1 минуту и 17 секунд
Ozerich, ты уже тут))))Быстро ты)))
PM MAIL   Вверх
azesmcar
Дата 14.4.2010, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(m9yt @  14.4.2010,  13:53 Найти цитируемый пост)
Мне не важно, на коком языке написано все остальное.Главное, применить функции из С для чтения\записи файлов.Остальные функции я могу и на С++ написать.

тогда так

Код

#include <stdio.h>

struct student
{
    char family[10];
    int year;
};

int main()
{
    FILE *f;
    struct student a;
    strcpy(a.family, "Ivanov");
    a.year = 29;     
    f = fopen("c:\\myfile.txt", "w"); 
    fprintf(f,"%d %s", a.year, a.family);
    fclose(f);
    return 0;
}

немного подправил код Ozerich.

Это сообщение отредактировал(а) azesmcar - 14.4.2010, 14:12
PM   Вверх
m9yt
Дата 14.4.2010, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 27.2.2010

Репутация: нет
Всего: нет



Всем спасибо.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0884 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.