从EEPROM读取每个字符到字符串

时间:2018-09-03 12:39:16

标签: c microchip electronics

我正在使用带指针的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 :(得分:2)

您声明Password的方式不正确。

char *Password;

这是指向内存中某个随机位置的指针,您没有在代码中指定任何位置,因此您将获得未定义的行为。您可以使用malloc()为其分配一些已分配的内存,或者对于这个简单的示例来说更好,只需使用一个数组代替:

char Password[10];

如果您要使用malloc(),您可以这样做:

char *Password;
Password=malloc(10);

使用完内存后,您必须记住要释放它。

free(Password);

要复制字符串,请使用strcpy,该字符串可与我指定的任一选项一起使用

strcpy(Password,"1234");