gpt4 book ai didi

c - 如何检查String是否由C中的数字或字母组成

转载 作者:行者123 更新时间:2023-12-02 08:19:18 25 4
gpt4 key购买 nike

我在识别字符串方面需要一些帮助。我有这样的传入字符串 *H1999999# 它可以从 *H1000000#~*H1999999# 变化,有时它是 *H1FINE#*H1MED# 或两者之间的任何其他文本。现在我已经完成的是解析数字字符串并将整数值复制到缓冲区。这是相关代码。

        char H1subbuff[10];

char *ptr;

if ((strncmp(rec,"*H1", 3) == 0) && (rec[9] == '#'))
{
memcpy(H1subbuff, &rec[3], 6 );
H1subbuff[6] = '\0';

H1Val = strtol(H1subbuff, &ptr, 10);

//Display H1VAL
}

现在我的问题是如何检查字符串是否由数字或字母组成。如何检查 H1subbuff 数据,以便进行比较。我需要执行与上述相同的解析 *H1FINE# 字符串的过程。

注意:- 以上两个字符串的字符串长度不同。

最佳答案

你可以用它来判断它是否是数字

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void
check_string(const char *string)
{
char *endptr;
long int value;
if (strstr(string, "*H1") == NULL)
return; // This string is not valid
// Move after the '*H1'
string += 3;
if (strchr(string, '#') == NULL)
return; // Missing the '#'
// Now we can try to determine whether the content
// between '*H1' and '#' is a number, or text
value = strtol(string, &endptr, 10);
// This simply compares pointer values, if `endptr'
// has the same value as `string`, then `strtol()' didn't
// find any numeric character, i.e. the first one
// in the data pointed to by `string' was non-numeric
if (endptr == string)
fprintf(stdout, "It's NOT a number\n");
else if (*endptr == '#')
fprintf(stdout, "It's a number: %ld\n", value);
else
fprintf(stdout, "It's almost a number\n");
}

首先我们执行一些完整性检查,一旦我们知道它是一个候选者,我们就可以尝试确定分隔部分是否为数字。

注意"It's almost a number"部分,这意味着并非所有由*H1#分隔的字符都是数字,但少数先出现,然后出现非数字字符。

此外,如果允许在分隔部分嵌入“#”,例如将其转义,则此代码将不起作用。

关于c - 如何检查String是否由C中的数字或字母组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38766290/

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