c-嵌入式系统中strcmp-sscanf和sprintf的替代品是什么



在嵌入式系统上工作时,发现sprintfsscanfstrcmp没有被推荐。

  1. sscanf

    在某些实例中,我必须从字符串中解析数字和其他重要数据。此外,字符串可能包含不同类型的数据。

    建议在嵌入式系统中替换sscanf的方法是什么?

  2. sprintf

    类似于sscanf,还需要sprintf

  3. strcmpstrstr

    strcmp和strstr在项目中是必需的。

    在嵌入式系统中,memcpy比strcmp更受欢迎吗?

在处理字符串时需要记住的主要要点是什么

char array[10]="data",copy[10];
for(int i=0;i<10 && array[i]!='';i++)
copy[i]=array[i];

这也是strcpy的替代方案吗?以上代码的可持续性如何

我不知道是谁告诉你strcmpstrstr是"不推荐";但事实并非如此。

如果你用printf和scanf系列函数用16kB的FLASH编程非常小的uC,那就太贵了(没有浮点和长支持的printf是5-7kB(。对于这种微型——编写自己的函数或使用微小的printf实现——你在网上有很多可用的工具。只需编写适合您的应用程序的简单解析器,而不必编写scanf。

您想要编写自己版本的strcpy

因此,取而代之的是:

char array[10]="data",copy[10];
for(int i=0;i<10 && array[i]!='';i++)
copy[i]=array[i];

你会有这样的东西:

// This sticks to specification from the standard C library.
// For your needs you may want something slightly different
// for example controlling the maximum size of the destination buffer
char *strcpy(char *to, const char *from)
{
char *dest = to;
while (*to++ = *from++) ;
return dest;
}
...
char array[10]="data",copy[10];
strcpy(copy, array);

最新更新