我正在使用带指针的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';
我在输出中得到一个一个未知字符。
答案 0 :(得分:2)
您声明Password
的方式不正确。
char *Password;
这是指向内存中某个随机位置的指针,您没有在代码中指定任何位置,因此您将获得未定义的行为。您可以使用malloc()
为其分配一些已分配的内存,或者对于这个简单的示例来说更好,只需使用一个数组代替:
char Password[10];
如果您要使用malloc()
,您可以这样做:
char *Password;
Password=malloc(10);
使用完内存后,您必须记住要释放它。
free(Password);
要复制字符串,请使用strcpy
,该字符串可与我指定的任一选项一起使用
strcpy(Password,"1234");