- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试确定我的字符串中的每个字符是否都是字母数字。我的编译器没有 isalnum 函数。
我的函数在下面,my_struct 有一个大小为 6 的字符数组 (uint8 bom_pn[6]) ....是的,uint8 是一个字符。
boolean myfunc( my_struct * lh )
{
ret = ( isalphanum( lh->bom_pn ) && isalphanum( lh->bom_pn + 1 ) &&
isalphanum( lh->bom_pn + 2 ) && isalphanum( lh->bom_pn + 3 ) &&
isalphanum( lh->bom_pn + 4 ) && isalphanum( lh->bom_pn + 5 ) );
}
我的宏定义如下:
#define isalphanum(c) ( ( c >= '0' && c <= '9' ) || \
( c >= 'A' && c <= 'Z' ) || \
( c >= 'a' && c <= 'z' ) )
上面抛出错误“操作数类型不兼容(“uint8 *”和“int”)”
如果我将我的定义更改为以下内容,我的代码会编译并收到警告。
#define isalphanum(c) ( ( (uint8)c >= '0' && (uint8)c <= '9' ) || \
( (uint8)c >= 'A' && (uint8)c <= 'Z' ) || \
( (uint8)c >= 'a' && (uint8)c <= 'z' ) )
警告:“从指针到较小整数的转换”
我的问题是,如何在没有警告的情况下正确地创建这个定义(并且显然检查正确)。
谢谢
最佳答案
正如您所说,lh->bom_pn
是一个字节数组,这意味着它实际上是一个指针。
因此,当您将它传递给 isalphanum
时,您传递的是一个指针,并将其与文字字节进行比较。
你有两个选择:
1.)
ret = ( isalphanum( lh->bom_pn[0] ) && isalphanum( lh->bom_pn[1] ) &&
isalphanum( lh->bom_pn[2] ) && isalphanum( lh->bom_pn[3] ) &&
isalphanum( lh->bom_pn[4] ) && isalphanum( lh->bom_pn[5] ) );
2.)
#define isalphanum(c) ( ( *(c) >= '0' && *(c) <= '9' ) || \
( *(c) >= 'A' && *(c) <= 'Z' ) || \
( *(c) >= 'a' && *(c) <= 'z' ) )
任何一个都可以解决您的问题。
关于c - isalnum 等效于使用#define,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10094476/
我问这个是对 this 的跟进问题。上一个问题几乎是三年前问的,所以我虽然问一个新的问题会更好。 我链接到的那个问题的症结在于 OP 试图运行以下代码行: find_if(s.begin(), s.e
您好! 这次让我们减少过多的介绍,直奔主题。 我在 C++ 中使用 isalnum 方法时遇到问题。 代码: int playAgainst = 0; do { cout > playAgai
char dict[N][M]; for(i = 0; i < N; i++) { do { printf("enter word at position: %d\n"
我正在尝试转换一些代码,这些代码旨在从命令行参数中删除除“_”之外的所有非数字字符,除了我试图让代码接受来自常规字符串,我尝试将代码转换为接受字符串,但我一直收到此错误 words.c:9: warn
我正在尝试确定我的字符串中的每个字符是否都是字母数字。我的编译器没有 isalnum 函数。 我的函数在下面,my_struct 有一个大小为 6 的字符数组 (uint8 bom_pn[6]) ..
对于赋值,我使用 std::isalnum 来确定输入是字母还是数字。任务的重点是创建一个“字典”。它在小段落上效果很好,但在文本页面上却很糟糕。这是我正在使用的代码片段。 custom::Stri
我有一个非常简单的程序,我在其中使用 isalnum 函数来检查字符串是否包含字母数字字符。代码是: #include "stdafx.h" #include #include #include
我尝试检查字符串的字符是否为 alnum,然后检查字符串是否仅包含 alnum 字符以打印字符串。当我运行该程序时,什么也没有发生。我有另一个程序,我用它从输入中读取我想要的文本,然后用 FIFO 发
我只有isalnum_t函数 ctype ;我期望功能isalnum那么发生了什么?我包括ctype这个函数是我需要检查字母和数字被声明为 isalnum_t(int, _locale_t) 。网上查
我正在尝试用 g++ 编译一个在 Visual Studio 2012 中编译良好的程序。 我收到错误:error: no matching function for call to ‘ptr_fun
我正在使用 g++ 4.7。 我想做的是这个, find_if(s.begin(), s.end(), isalnum); 其中 isalnum 在 cctype 中定义,s 是一个字符串。 logm
我正在用法语编程,因此,我需要使用重音字符。我可以使用输出它们 #include 和 setlocale(LC_ALL, "") , 但是当我读重音字符时似乎有问题。这是我用来说明问题的简单示例: #
我要拆分 "Use a regexp that matches any combination\nthat satisfies Python's\n\nisalphanumeric() or issp
我写了一个扩展 isalnum 的函数来识别 UTF-8 编码的变音符号。 是否有更优雅的方法来解决这个问题? 代码如下: bool isalnumlaut(const char character)
我用谷歌搜索了我的问题,也许我没有使用正确的搜索词,因为我没有找到解决我问题的方法。 我想做的是使用 push 和 pop 方法和模板做一个后缀计算器表达式。 教授的话 Input The input
我是一名优秀的程序员,十分优秀!