Я хочу открыть файл и считать все содержимое
1. как это сделать построчно, используя WinAPI?
2. как это сделать считав весь файл сразу в какую-то переменную, используя WinAPI?
Код:

void main()
{
strng d="log.txt";
HANDLE hFile;
strng t;
DWORD cbreading;
DWORD fzi;
LPDWORD dwSizeHigh;
if (hFile=CreateFile(d,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL))
{
fzi = GetFileSize(hFile, NULL);
printf("%d", fzi); //OK - 304
ReadFile(hFile,&t,fzi,&cbreading,NULL); // как организовать цикл считывающий построчно?
printf("%s",&t); //глюк. если выше написать ReadFile(hFile,&t,100,&cbreading,NULL); то все ОК. Почему?
CloseHandle(hFile);
}
}
******Добавлено:
Ошибка была в том, что строка не инициализирована.
В общем файл читается полностью так.
Код:

#include <windows.h>
#include <stdio.h>
#define Msg(x) MessageBox(0,x,"program",MB_OK)
typedef char* strng;
strng create_string();
strng create_string(int sz);
void delete_string(strng m);
void print_string(strng t);
void terminate_string(strng m, int sz);
strng create_string(int sz)
{
strng m;
m = new char[sz+1];
terminate_string(m, sz+1);
return (m);
}
void delete_string(strng m)
{
delete[] m;
}
void print_string(strng t)
{
int i;
for (i=0;t[i]!='\0';i++)
{
printf("%C",t[i]);
}
printf("\n");
}
void terminate_string(strng m, int sz)
{
m[sz-1]='\0';
}
void main()
{
strng d="log.txt";
strng e="log1.txt";
HANDLE hFile, hCopy;
strng t;
DWORD cbreading;
DWORD fzi;
BOOL bResult;
if (hFile=CreateFile(d,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL))
{
fzi = GetFileSize(hFile, NULL);
t=create_string(fzi);
bResult = ReadFile(hFile, t, fzi, &cbreading, NULL);
if(!bResult) {
Msg("Невозможно прочитать файл!");
}
else
{
hCopy=CreateFile(e,
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
NULL,
NULL);
WriteFile(hCopy, t, fzi, &cbreading, NULL);
CloseHandle(hCopy);
}
print_string(t);
delete_string(t);
CloseHandle(hFile);
}
}