Форум программистов, компьютерный форум CyberForum.ru

Лишние символы при чтении из файла - C++

Восстановить пароль Регистрация
 
forik
25 / 19 / 1
Регистрация: 10.10.2009
Сообщений: 75
22.02.2012, 09:29     Лишние символы при чтении из файла #1
Здравствуйте!
Есть текстовый файл следующего содержания:

DROP FUNCTION IF EXISTS NumericOnly;

CREATE FUNCTION NumericOnly (val VARCHAR(255))
RETURNS VARCHAR(255)
BEGIN
DECLARE idx INT DEFAULT 0;
IF ISNULL(val) THEN RETURN NULL; END IF;

IF LENGTH(val) = 0 THEN RETURN ""; END IF;
SET idx = LENGTH(val);
WHILE idx > 0 DO
IF IsNumeric(SUBSTRING(val,idx,1)) = 0 THEN
SET val = REPLACE(val,SUBSTRING(val,idx,1),"");
SET idx = LENGTH(val)+1;
END IF;
SET idx = idx - 1;
END WHILE;
RETURN val;
END;


Читаю его следующим образом:
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
FILE *sign;
fopen_s(&sign, "\\path\\file.txt", "rb");
BYTE *content = MyReadFile(sign);
 
BYTE* MyReadFile(FILE *f)
{
    size_t result;
    BYTE *buffer;
    long lSize;
    if (f == NULL) 
    {
        fputs ("File error", stderr); 
        exit (1);
    }
 
    fseek (f, 0, SEEK_END);
    lSize = ftell (f);
    rewind (f);
 
    //buffer = (BYTE*) malloc (sizeof(char)*lSize);
    buffer = new BYTE[lSize];
    if (buffer == NULL) 
    {
        fputs ("Memory error", stderr); 
        exit (2);
    }
 
    result = fread (buffer, 1, lSize, f);
    if (result != lSize) 
    {
        fputs ("Reading error",stderr); 
        exit (3);
    }
    
    fclose (f);
    return buffer;
}
При чтении размер
C++
1
lSize = ftell (f);
равен 479 байт, при выделении памяти
C++
1
buffer = new BYTE[lSize];
размер буфера равен 496 байт. При чтении же на место дишних 17 байт встают символы ээээ««««««««юоюою.

Что это такое-то?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2012, 09:29     Лишние символы при чтении из файла
Посмотрите здесь:

Лишние символы при копирование текстового файла C++
Лишние символы при выводе строк C++
При выводе массива выводятся лишние непонятные символы C++
Лишние символы при чтении бинарного файла C++
C++ Лишние символы при записи в файл
Лишние символы в конце строки при копировании C++
C++ Добавляются лишние символы при выводе данных в поток
Откуда берутся лишние символы при создании массива с помощью оператора new? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
forik
25 / 19 / 1
Регистрация: 10.10.2009
Сообщений: 75
24.02.2012, 08:24  [ТС]     Лишние символы при чтении из файла #2
Монолог какой-то, но для тех, кто как и я забыл будет полезно.
В Си строка должна заканчиваться '\0', соответственно, после чтения файла нужно делать:
C++
1
buffer[size] = '\0';
Yandex
Объявления
24.02.2012, 08:24     Лишние символы при чтении из файла
Ответ Создать тему
Опции темы

Текущее время: 00:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru