Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2009, 14:45   #1
artush1984
Форумчанин
 
Аватар для artush1984
 
Регистрация: 27.04.2009
Сообщений: 184
По умолчанию From FILE to char*

Здравствуйте!!! Подскажите пожалуйста какую функцию использовать что бы всё содержание файла присвоить oдному char* у. Заранее благодарен!
Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать!
artush1984 вне форума Ответить с цитированием
Старый 14.07.2009, 14:54   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Думаю из <stdio.h> функа fgets подойдет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.07.2009, 15:15   #3
artush1984
Форумчанин
 
Аватар для artush1984
 
Регистрация: 27.04.2009
Сообщений: 184
По умолчанию

Но на сколько я знаю fgets присваивает только до первого ENTER а.
Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать!
artush1984 вне форума Ответить с цитированием
Старый 14.07.2009, 15:23   #4
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Ну можно так:

Код:
char *str=new char[размер вашего файла];
int i=0;

f=open("C:\file.txt","r");

while(!eof(f))
str[i++]=fgetс(f);
fclose(f);
Но не сильно удачная идея, особенно для больших файлов.

Последний раз редактировалось profi; 14.07.2009 в 15:29.
profi вне форума Ответить с цитированием
Старый 14.07.2009, 15:25   #5
artush1984
Форумчанин
 
Аватар для artush1984
 
Регистрация: 27.04.2009
Сообщений: 184
По умолчанию

Попробую спасибо!!!!
Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать!
artush1984 вне форума Ответить с цитированием
Старый 14.07.2009, 15:26   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Странно... Вот пример из хелпа:
Код:
#include <string.h>
#include <stdio.h>
int main(void)
{
   FILE *stream;
   char string[] = "This is a test";
   char msg[20];
   /* open a file for update */
   stream = fopen("DUMMY.FIL", "w+");
   /* write a string into the file */
   fwrite(string, strlen(string), 1, stream);
   /* seek to the start of the file */
   fseek(stream, 0, SEEK_SET);
   /* read a string from the file */
   fgets(msg, strlen(string)+1, stream);
   /* display the string */
   printf("%s", msg);
   fclose(stream);
   return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.07.2009, 16:06   #7
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

В WinAPI есть возможность развернуть файл прямо в память и получить к нему доступ как к массиву байт.
Цитата:
HANDLE hfile,mapfile;
BYTE *mf;
DWORD size;
hfile=CreateFile("file.txt",GENERIC _READ,FILE_SHARE_READ|FILE_SHARE_WR ITE,NULL,OPEN_EXISTING ,FILE_ATTRIBUTE_NORMAL,NULL);
// Чтобы не мучаться с чтением больших файлов по частям и выделением памяти, развернем файл на пространство памяти (Мапируем)
size=GetFileSize(hfile,NULL);
mapfile = CreateFileMapping(hfile,NULL,PAGE_R EADONLY,0,size,NULL);
mf = MapViewOfFile(mapfile,FILE_MAP_READ ,0,0,size);
// mf - указатель на массив, который является содержимым файла
UnmapViewOfFile(mf);
//закрываем файл
CloseHandle(mapfile);
CloseHandle(hfile);
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 14.07.2009, 22:45   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Ну и еще примерчик. С fread:
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
using namespace std;

int main()
{
char *str;
FILE *fin;
long size;

fin = fopen("test.txt","r");
fseek(fin,0,SEEK_END);  // ставим указатель в конец
size = ftell(fin);    // получаем размер
fseek(fin,0,SEEK_SET);  // возвращаем указатель в начало

str = (char*)malloc(size*sizeof(char));  // выделяем память
size = fread(str,1,size,fin);  // читаем все содержимое файла
for(int i=0; i<size; i++)
 putc(str[i],stdout);  // выводим содержимое
 
free(str);
fclose(fin);
getch();
return 0; 
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 15.07.2009, 00:01   #9
artush1984
Форумчанин
 
Аватар для artush1984
 
Регистрация: 27.04.2009
Сообщений: 184
По умолчанию

Спасибо!!!! Всем
Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать!
artush1984 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка cannot convert from 'char *' to 'char [100]' Stellvertreter Общие вопросы C/C++ 5 30.05.2010 00:02
FastString::FastString(const char *psz) : m_psz(new char [strlen(psz) + 1]) { strcpy(m_psz, psz); } lebedun Общие вопросы C/C++ 3 27.03.2009 03:43
отличие char* str ="..." от char ...[]="..." StarWorm Общие вопросы C/C++ 2 20.11.2008 08:48
Проблема с char v01umE Общие вопросы C/C++ 4 03.07.2008 21:37
Есть таблица - В ней три поля int, char, char нужно чтобы данные заносились в таблицу Mysql Muahahaha PHP 8 27.03.2008 11:17