Проблемы с потоками в С
Пример:
#include <cstdio>
#include <string>
using namespace std;
struct human
{
string family;
int year;
};
void main ()
{
human a;
a.family="Ivanov";
a.year=29;
FILE *f;
f=fopen("myfile.txt", "wb");
fwrite(&a,sizeof(human),1,f);
fclose(f);
}
После выполнения программы создается файл со всякими кракозябрами.
в описании struct human
в main при объявлении student a;
Если это не опечатка при создании темы, то операция sizeof(student) скорее всего вернет NULL или еще какой-либо хлам. В любом случае это не то что вы хотели ;-)
Вывод: надо почитать учебник по C++.
Вывод: надо почитать учебник по C++.
Еще как может!Я исправил код.
{
string family;
int year;
};
...
student a;
как ты это объяснишь? магия?
потом, ты пишешь в поток структуру, а ты уверен, что компилятор знает как ее туда вкатать? да еще и тип стринг, вообще то это уже и не с, да и к тому же на сколько я понимаю стринг внутри себя содежит массив чаров, как думаешь, запишется весь массив или только адрес первого элемента?
еще ты открываешь с флагом "wb" то есть если мне не изменяет память то это можно понять как "на запись бинарный", потом удивляешься хламу?
итог: иди читай умные книжки, бо прежде чем что то делать надо понимать, что ты делаешь!
[QUOTE=Cka3o4HuK]Что-то я не заметил тут никаких потоков[/QUOTE]
а они там как бы и есть, правда не объектно ориентированные, не си плаз плазные, но все же файловые потоки ввода\вывода.
[QUOTE=Cka3o4HuK]Если не опечатка при создании темы, то операция sizeof(student) скорее всего вернет NULL или еще какой-либо хлам.[/QUOTE]
вернет 4 байта или 32 бита, или слово, или размер типа инт, угадаешь почему? потому что по умолчанию используется тип инт, правда все более или менее продвинутые и современные компиляторы просто выругаются матом.
{
string family;
int year;
};
...
student a;
как ты это объяснишь? магия?
потом, ты пишешь в поток структуру, а ты уверен, что компилятор знает как ее туда вкатать? да еще и тип стринг, вообще то это уже и не с, да и к тому же на сколько я понимаю стринг внутри себя содежит массив чаров, как думаешь, запишется весь массив или только адрес первого элемента?
еще ты открываешь с флагом "wb" то есть если мне не изменяет память то это можно понять как "на запись бинарный", потом удивляешься хламу?
итог: иди читай умные книжки, бо прежде чем что то делать надо понимать, что ты делаешь!
Код поправил, опечатка была.А я тут не причем, это наши преподы такие методички "умные" делают.
ну ладно, допустим, что преподы идиоты, в чего я не очень верю, но мозг то и интернет тебе на что? шляпу носить и в контакте висеть?
зы:под интернетом я понимаю возможность скачать умных книжек и почитать, а то еще подумаешь чего.
зызы: и не вздумай еще раз использовать отмазку "преподы - идиоты", это моя фишка, ее не трогать! научись сам отвечать за свою глупость или придумай чего нить посвежее и креативней.
#include <cstdio>
using namespace std;
struct human
{
string family;
int year;
};
void main
{
human a;
a.family="Ivanov";
a.year=29;
FILE *f;
f=fopen("myfile.txt", "w");
[COLOR="Red"]fprintf(f,"%s\n%d\n",a.family.c_str(),a.year);[/COLOR]
fclose(f);
}
зы:под интернетом я понимаю возможность скачать умных книжек и почитать, а то еще подумаешь чего.
#include <cstdio>
using namespace std;
struct human
{
string family;
int year;
};
void main
{
human a;
a.family="Ivanov";
a.year=29;
FILE *f;
f=fopen("myfile.txt", "w");
[COLOR="Red"]fprintf(f,"%s\n%d\n",a.family.c_str(),a.year);[/COLOR]
fclose(f);
}
Я читаю 2 книги Шилда, Вконтакте не увлекаюсь!Не надо так категорично делать выводы.
За код спасибо!)
а вот в книжках товарисча Шилда это все описано и расписано будь здоров. тут тебе не отвертеться, что Шилд - идиот, пишет типа вот такие "умные" книжки! так что признавайся или не Шилда или не читаешь.:D ...хотя может все вместе!0_о
Ты ошибаешься. Например, я вижу, что чего-то не хватает после main. Я вижу, что для std::string нет заголовочного файла. Не будет компилироваться.