HANDLE hFile;
DWORD dwBytesWritten, dwBufSize=2048;
hFile = CreateFile("log.txt", GENERIC_READ, 0, NULL, OPEN_ALWAYS, 0, 0);
SetFilePointer(hFile, 21, NULL, FILE_BEGIN);;
ReadFile(hFile, str, strlen(str), &dwBytesWritten, NULL);
MessageBox(NULL, str, "", NULL);
CloseHandle(hFile);
Строки
Код:
но читается все строка целиком, а вот как обрезать
Код:
ReadFile(hFile, str, strlen(str), &dwBytesWritten, NULL);
Как это у вас так? Изначально в переменной str нет строки (т.е. там сразу идёт терминальный ноль - это в лучшем случае, в худшем - там мусор), а вы вычисляете её длину - так не выйдет. Вам надо или считать из файла посимвольно, пока не наткнётесь на ноль, или вообще читать сразу много данных (размер должен заведомо превышать максимальную в вашей задачи длину строки) - и тогда при обработке строк ваша str автоматически будет обрезаться по первому нулю в ней.
программа готова...
Program P1;
Uses crt;
Var text: string;
a: array[1..255] of char;
i, j, n: byte;
begin
clrscr;
Writeln (' Vvedite text' );
Read (text);
For i :=1 to length (text) do
begin
a := chr(i); n:=0;
for j:=1 to length (text) do
if a = text [j] then n: = n+1;
if n<>0 then writeln ( 'Simvol ' , a , ' vstre4aetsya v tekste ' , n,' raz.' );
End;
Readln;
Readln;
End.
Есть программа готовая л/р по строкам,делала не сама,поэтому не могу нормально объяснить вот этот момент...
Writeln (' Vvedite text' );
Read (text);
For i :=1 to length (text) do
begin
a := chr(i); n:=0;
for j:=1 to length (text) do
if a = text [j] then n: = n+1;
if n<>0 then writeln ( 'Simvol ' , a , ' vstre4aetsya v tekste ' , n,' raz.' );
End;
....пожалуйста напишите коментарии к каждой строчке)))
заранее огромное спасибо))
Код:
Writeln (' Vvedite text' ); //выводит сообщение на экран
Read (text); //считывает введённый пользователем текст
For i :=1 to length (text) do //цикл от 1 до значения=длине введённого текста
begin
a:= chr(i); //в массив a записывается символ с порядковым номером i (в таблице ASCII)
n:=0; //обнуляем счётчик
for j:=1 to length (text) do //цикл от 1 до значения=длине введённого текста
if a = text [j] then n: = n+1; //если эл. массива a = эл. массива text [j] увеличиваем счётчик на единицу (подсчитываем сколько раз символ a встречается во введенном тексте text)
//если n не равно 0 выводим сколько раз символ a встречается во введенном тексте
if n<>0 then writeln ( 'Simvol ' , a , ' vstre4aetsya v tekste ' , n,' raz.' );
End;
Read (text); //считывает введённый пользователем текст
For i :=1 to length (text) do //цикл от 1 до значения=длине введённого текста
begin
a:= chr(i); //в массив a записывается символ с порядковым номером i (в таблице ASCII)
n:=0; //обнуляем счётчик
for j:=1 to length (text) do //цикл от 1 до значения=длине введённого текста
if a = text [j] then n: = n+1; //если эл. массива a = эл. массива text [j] увеличиваем счётчик на единицу (подсчитываем сколько раз символ a встречается во введенном тексте text)
//если n не равно 0 выводим сколько раз символ a встречается во введенном тексте
if n<>0 then writeln ( 'Simvol ' , a , ' vstre4aetsya v tekste ' , n,' raz.' );
End;
как-то так:)
Спасибо!!!))))))