Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/145: Рейтинг темы: голосов - 145, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 30.08.2009
Сообщений: 20

ofstream

05.10.2009, 20:26. Показов 26912. Ответов 13

Студворк — интернет-сервис помощи студентам
доброго времени суток! Возникла такая проблема:
У меня программа должна помещать данные о процессах и модулях в txt файл
std::ofstream ofs("zzz.txt");
ofs<<pr.szExeFile<<" ID:"<<pr.th32ProcessID<<std::endl;
но в файл вместо имени процесса выводится 1С02F4F4. ID выводится нормально.
То же самое и с именем модуля
ofs<<mo.szModule<<std::endl;
вместо имени выводится 1СO2F724
базовый адресс вообче пихать в txt не хочет mo.modBaseAddr, выдает ошибку.
быть может есть какие-то функции для записи в txt файл таких типов даных, или я что-то не так делаю?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.10.2009, 20:26
Ответы с готовыми решениями:

Ofstream
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main() { ofstream test(&quot;C:\Program Files...

ofstream
Привет всем! Народ помогите пожалуйста нубу) Как сделать так чтобы создовался файл с именем которое я наберу с клавиатуры... пытался...

ofstream
Линковка, компиляция без ошибок. При выполнении программы срабатывает условие, почему так? Если лепить файл с программой в директории, то...

13
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
05.10.2009, 20:42
скорее всего выводишь адрес, а не значение
0
0 / 0 / 0
Регистрация: 30.08.2009
Сообщений: 20
05.10.2009, 20:50  [ТС]
нет это не адресс, потому что когда вывожу в окно output всё отлично
RETAILMSG(1,(pr.szExeFile));
а в файл не хочет
0
Эксперт по математике/физике
 Аватар для Том Ардер
4218 / 3418 / 396
Регистрация: 15.06.2009
Сообщений: 5,818
06.10.2009, 02:18
Да, в MFC есть такой эффект.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    
#include <fstream>
 
int main()
{
           CString cstr("test MFC");
        ofstream    of("dbg.txt");
 
        cout << (LPCTSTR)cstr << endl;
        cout << cstr  << endl;
        
        of << (LPCTSTR)cstr << endl;
        of << cstr  << endl;
        of.close();
 
return 0;
}
на консоли и в файле будет:
test MFC
00324204
0
0 / 0 / 0
Регистрация: 30.08.2009
Сообщений: 20
06.10.2009, 20:05  [ТС]
std::ofstream ofs("zzz.txt");
ofs<<(LPCTSTR)pr.szExeFile<<" ID:"<<pr.th32ProcessID<<std::endl;
тоже ничего не выходит. в файле набор цифр и букв а не имя процесса
0
0 / 0 / 0
Регистрация: 30.08.2009
Сообщений: 20
07.10.2009, 20:10  [ТС]
через fprintf тоже невыходит(
подскажить кто-нибудь(
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
08.10.2009, 06:19
C++
1
2
    cout << pr.th32ProcessID[0] << endl;
    cout << sizeof *pr.th32ProcessID << endl;
посмотри в консоли, если там название процесса, должно вывести первый символ и еденицу
0
0 / 0 / 0
Регистрация: 30.08.2009
Сообщений: 20
08.10.2009, 20:11  [ТС]
HANDLE hS = NULL;
PROCESSENTRY32 pr = {sizeof(pr)};
hS = CreateToolhelp32Snapshot(TH32CS_SNAPPROC ESS, 0);
pr.dwSize=sizeof(PROCESSENTRY32);
Process32First(hS,&pr);
for(int i=0;i<10;i++)
{
RETAILMSG(1,(pr.szExeFile));
Process32Next(hS,&pr);
}
В таком виде мне программа выдает список первых 10 процессов в окно output:
NK.EXE
filesys.exe
device.exe
shell32.exe
и тд...

засменяю строку
RETAILMSG(1,(pr.szExeFile));
на
char buffer[200];
printf( "%n %d", buffer,pr.th32ProcessID);
и вместо процессов выводится набор цифр, причем вместо каждого процесса однаковые

При выводе в файл
FILE *f;
f = fopen("zzz.txt","wb+");
fprintf(f,"%n %d",buffer,pr.szExeFile);
тоже набор цифр и букв

и при таком вырианте тоже:
std::ofstream ofs("zzz.txt");
ofs<<pr.szExeFile

pr.szExeFile имееет тип TCHAR, и скорее всего функции printf, fprintf, оператор << не предусмотренны для работы с этим типом. Функция RETAILMSG понимает этот тип и выводит в окно output его нормально. Скорее всего есть функция которая может вывести эту переменную в txt файл, вот какая я и хочу узнать
0
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
08.10.2009, 21:15
александр13, вместо fstream попробуй fputs
пример
C++
1
2
FILE *f=fopen("text.txt", "a");
fputs("text", f);
1
0 / 0 / 0
Регистрация: 30.08.2009
Сообщений: 20
08.10.2009, 21:41  [ТС]
f = fopen("zzz.txt","wb+");
fputs(pr.szExeFile, f);

пишет :
error C2664: 'fputs' : cannot convert parameter 1 from 'TCHAR [260]' to 'const char *'
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
09.10.2009, 03:08
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
31
32
33
34
35
36
37
#include <stdio.h> 
#include <Windows.h> 
#include <Winnt.h> 
//Здесь определена структура PROCESSENTRY32 и функция CreateToolhelp32Snapshot
#include <tlhelp32.h>
//int main ();
HANDLE functsia ()  {
 
 HANDLE hProcessSnap;
 PROCESSENTRY32 pe32;
 
 //Это мы находим дескриптор снимка процессов
 hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
 if (hProcessSnap == INVALID_HANDLE_VALUE)
 return false;
 pe32.dwSize = sizeof(PROCESSENTRY32);
 
 FILE *f;
 f = fopen("rezultat.cc","wb");
 
 
 while (Process32Next(hProcessSnap, &pe32)) {
  printf ("pe32.szExeFile= %s\n", pe32.szExeFile);
  fprintf(f,"%s \n",pe32.szExeFile);
 } 
 
 
 fclose (f);
 CloseHandle(hProcessSnap);
 
 
}
 int main () {
  functsia ();
  getchar ();
  return 0;
 }
Автор, просьба, впредь оформляй поаккуратнее всё это дело, а то я чуть мимо не прошёл. Тема же очень интересная.
На тебе и в файл и на консоль сразу. Закомменть, чё не надо.
Ты походу дела с printf напортачил. Пишешь %d и надеешься, что она вернёт тебе строку.
...Поискал бы ссылки у себя, да они палёвые, хакерские... Меня выгонят к матери отсюда тогда...
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.10.2009, 03:23
Цитата Сообщение от александр13
При выводе в файл
FILE *f;
f = fopen("zzz.txt","wb+");
fprintf(f,"%n %d",buffer,pr.szExeFile);
тоже набор цифр и букв
неправильно юзаешь функцию fprintf

тип TCHAR я поискал и нашёл, что это либо char либо wchar_t, в зависимости от желания пользователя

поэтому то, что МедведЪ посоветовал, должно сработать
C
1
2
    f = fopen("zzz.txt","w");
    fputs((const char *) pr.szExeFile, f);
1
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
09.10.2009, 14:31
александр13, весь код покажи
0
0 / 0 / 0
Регистрация: 30.08.2009
Сообщений: 20
09.10.2009, 20:07  [ТС]
Всем большое спасибо! Всё работает))
Вот весь код:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// PR.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <tlhelp32.h>
#include <Windows.h> 
#include <Winnt.h> 
#include <tlhelp32.h>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
 HANDLE hProcessSnap, pH = NULL;
 PROCESSENTRY32 pe32;
 
 hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
 if (hProcessSnap == INVALID_HANDLE_VALUE)
 return false;
 pe32.dwSize = sizeof(PROCESSENTRY32);
 Process32First(hProcessSnap,&pe32);
 
 FILE *f;
 f = fopen("rezultat.txt","wb");
 
 fprintf(f,"Process:\n");
 while (Process32Next(hProcessSnap, &pe32))
 {
 fprintf(f,"\n");
 fprintf(f,"%S",pe32.szExeFile);
 fprintf(f," ID: %u\n",pe32.th32ProcessID);
 fprintf(f,"   Modules:\n");
 pH = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pe32.th32ProcessID);
 MODULEENTRY32 mo = {sizeof(mo)};
 Module32First(pH,&mo);
 
 while (Module32Next(pH , &mo))
 {
 fprintf(f,"   %S\n",mo.szModule);
 fprintf(f,"     ID: %u\n",mo.th32ModuleID);
 fprintf(f,"     BaseAddr: %u\n",mo.modBaseAddr);
 fprintf(f,"     Size: %u\n",mo.modBaseSize);
 }
 } 
 
 
 fclose (f);
 CloseHandle(hProcessSnap);
 return 0;
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.10.2009, 20:07
Помогаю со студенческими работами здесь

Не работает ofstream
Вот код: #include &lt;iostream&gt; #include &lt;fstream&gt; #include &quot;Shlwapi.h&quot; #include &lt;shlobj.h&gt; #include &lt;stdio.h&gt; #include...

ifstream ofstream
как работают данные файловые операции, объясните пожалуйста куда происходит запись ена жёстком диске

FILE* и ofstream
Здравствуйте. Была поставлена предо мной задача: Сделать структуру, которая через меню будет выполнять некоторые действия с файлами....

C++ файлы ifstream/ofstream
Доброе время суток нужна небольшая помощь с записью/считыванием из файла вообщем при считывание из файла eof() не определяет конца файла и...

OFSTREAM Вывод в переменные
В си есть фсканф для того, что бы можно было выводить информацию в переменные, разделенную символами (; : и тд) Есть ли такая возможность...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru