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

标签 c embedded

我使用带指针的 char 创建字符串。因此,当我想将我的字符串保存在 EEPROM 中时,我使用下面的代码。

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

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

这段代码工作正常。我怎样才能从 EEPROM 中读取每个 byte(char) 并创建一个 string?例如,我试过了,但没用。

char *Password;
int i = 0;

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

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

我在输出中得到一个未知字符

最佳答案

您声明 Password 的方式不正确。

char *Password;

这是一个指向内存中某个随机位置的指针,您没有在代码中的任何地方指定它,因此您会得到未定义的行为。您可以使用 malloc() 为它分配一些分配的内存,或者对于这个简单的示例更好的方法是使用数组代替,如下所示:

char Password[10];

如果你要使用 malloc() 你会这样做:

char *Password;
Password=malloc(10);

当你用完内存后,你必须记得释放它。

free(Password);

要复制字符串,您可以使用 strcpy,它适用于我指定的任一选项

strcpy(Password,"1234");

关于c - 从 EEPROM 读取每个字符到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52149975/

相关文章:

assembly - 了解指令是如何翻译的(计算机架构)

c - fopen 导致段错误

c - 位图颜色 - C

c - C 中的高阶函数

C printf() 格式化 : Float doesn't seem to right justify.

c - Termios 和打开文件

c++ - 在 Windows CE 5 中的可见应用程序之间切换,Lang : C++

c - 嵌入式系统中的三角函数

c - C和嵌入式C有什么区别?

c - 未触发 Atmel SAME70 USART 接收超时