Читайте каждый символ из EEPROM в строку - PullRequest
0 голосов
/ 03 сентября 2018

Я использую char с указателем для создания строки. Поэтому, когда я хочу сохранить свою строку в EEPROM, я использую этот код ниже.

char *Password= "1234";
int i = 0;

for(i = 0; i <= 3; i++)
{
    DataEEWrite(i, *Password); 
    Password++;
}

Этот код работает нормально. Как я могу сделать то же самое для чтения каждого byte(char) из EEPROM и создания string? пример, я попробовал это, но это не сработало.

char *Password;
int i = 0;

for(i = 0; i <= 3; i++)
   Password[i] = DataEERead(i);

Password.Value[4] = '\0'; 

Я получаю неизвестный символ на выходе.

1 Ответ

0 голосов
/ 03 сентября 2018

То, как вы объявили Password, неверно.

char *Password;

Это указатель на какое-то случайное место в памяти, которое вы нигде не определяете в своем коде, поэтому вы получите неопределенное поведение. Вы можете назначить ему некоторую выделенную память, используя malloc() или лучше для этого простого примера, просто используйте вместо этого массив, подобный этому:

char Password[10];

Если бы вы использовали malloc(), вы бы сделали это так:

char *Password;
Password=malloc(10);

и когда вы закончите с памятью, вы должны помнить, чтобы освободить ее.

free(Password);

Для копирования строки вы используете strcpy, который работает с любой из указанных мной опций

strcpy(Password,"1234");
...