С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
forik
25 / 19 / 1
Регистрация: 10.10.2009
Сообщений: 75
#1

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

22.02.2012, 09:29. Просмотров 1178. Ответов 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 байт встают символы ээээ««««««««юоюою.

Что это такое-то?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2012, 09:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Лишние символы при чтении из файла (C++):

Лишние символы при чтении бинарного файла - C++
Добрый день, форумчане! Прошу помочь разобраться с проблемой. Программа преобразовывает текстовый файл в двоичный. При выводе...

Лишние символы при считывании файла - C++
Считываю структуру с файла и вывожу в консоль, при выводе появляются лишние символы в конце. Скажите пожалуйста с чем это связано и как их...

При чтении файла считываются невидимые символы - C++
Доброго времени суток! При считывании с файла символов и записи в список считываются невидимые символы (буква я). Откуда она взялась? В...

Лишние символы при копирование текстового файла - C++
не могу понять почему при копировании текстового файла у меня вставляются в конец куча лишних символов, причем чем больше файл тем больше...

При чтение из файла в начало строки добавляются лишние символы - C++
getline какую-то фигню читает,причем если первую строку, то вначале добавляет "яэ" int main() { string way = "Example.txt"; ...

Не читаемые символы при чтении файла из структуры "Товары" - C++
У меня выводятся не читаемые символы на экран, когда я ввожу текст на русском: В итоге в файл записываются какие-то непонятные мне...

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

Выводит лишние символы из файла - C++
Есть вот такой код, и где-то ошибка есть во второй части (считывания из файла), ближе к концу при выводе расшифрованной строки. Почему-то с...

Лишние символы при выводе строк - C++
При создании игрового поля для тетриса (вывод строк, в соответствии с заданным алгоритмом) возникает странная ошибка. Вместо, собственно,...

Лишние символы при записи в файл - C++
void Add_department::OnBnClickedOk() { char seps = ":"; char *token; char* file_name = "D:\\department.txt"; char...

Лишние символы в конце строки при копировании - C++
При копировании данных в строку (std::string) в цикле, на "стыках" появляются лишние символы. Пример: <meta...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.