2015-02-09 6 views
-4

Я пытаюсь прочитать данные с карты SD. У меня есть функция, которая возвращает символ и -1, когда она достигает конца файла. Я хочу сохранить каждый символ в массиве.Создание массива символов malloc

я инициализировать его массив хранения данных, как например:

char* storage = (char *) malloc (sizeof(char) * SIZE)); 

однако, когда я напечатать значения, я не получить правильные данные. Однако если я изменю его на:

int* storage = (char *) malloc (sizeof(char) * SIZE)); 

это работает.

Я инициализирую массив указателей неправильно?

+0

как вы печатаете? – sashas

+0

Кажется, что он возвращает 'int', а не' char', поскольку 'char' не указывается даже для поддержки отрицательных чисел. – lared

+1

прочитайте документацию для функции. Отправьте это описание вместе с кодом, который вы используете, чтобы вызвать функцию и распечатать результаты. –

ответ

-1

Моя ошибка, я должен был проверил функцию возврата файла:

short int alt_up_sd_card_read(short int file_handle); 

/* Считывает один символ из заданного файла. Возвращает -1, если в конце файла. Любое другое отрицательное число * означает, что файл не может быть прочитан. Число от 0 до 255 - это символ ASCII, считанный с SD-карты. */

Так что я должен выделять короткий int вместо char. Благодарю.

+2

нет, вы должны выделять 'char' или' unsigned char'. Вы делаете что-то неправильно либо в коде, который хранит значения в массиве, либо код, который печатает значения. –

Смежные вопросы