gpt4 book ai didi

检查char数组是否不是垃圾? (有效字符)

转载 作者:行者123 更新时间:2023-12-04 09:29:19 24 4
gpt4 key购买 nike

我有一个 char 数组,它在硬件中从某个 EEPROM 设备读取数据,如果那里没有数据,它的值可以是任何值(垃圾)。

我想检查他的值是不是垃圾并且有一些有效字符

                       for(int k=address;k<address+MEM_MAX_LEN;k++)
{
charBuf[k-address]= EEPROM.read(k);
if(charBuf[k-address]=='*')
{
charBuf[k-address]='\0';
break;
}

当使用 strlen>1 我没有得到想要的响应(显然)。

如何查看?

最佳答案

你永远无法确定,因为垃圾看起来像是有效的文本,但你可以做出合理的猜测。像这样,假设一个有效的字符串应该以 NUL 结尾并且只包含可打印的字符:

#include <ctype.h> // For isprint

// ....

int length = 0;
while (length < MEM_MAX_LEN && charBuf[length] != '\0')
++length;

if (length == 0) {
printf("Empty string. Probably garbage!\n");
return 0;
}

if (length == MEM_MAX_LEN) {
printf("No NUL byte found. Probably garbage!\n");
return 0;
}

for (int i = 0; i < length; ++i) {
if (!isprint((unsigned char)charBuf[i])) {
printf("Unprintable char (code %d) at position %d. Probably garbage!\n",
(unsigned char)charBuf[i], i);
return 0;
}
}

printf("String consists of %d printable characters. Probably not garbage!\n", length);
return 1;

关于检查char数组是否不是垃圾? (有效字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33346733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com