c - 我怎样才能让 isalnum() 正确地接受字符串

标签 c

我正在尝试转换一些代码,这些代码旨在从命令行参数中删除除“_”之外的所有非数字字符,除了我试图让代码接受来自常规字符串,我尝试将代码转换为接受字符串,但我一直收到此错误

words.c:9: warning: assignment makes pointer from integer without a cast

我对自己做错了什么感到困惑,所以我非常感谢能为我解决这个问题提供的任何帮助,谢谢!

这里还有接受命令行参数的原始代码

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(int argc, char ** argv) {
    int i;
    char *p;
    if (argc > 1) {
        for (p = argv[1]; *p != '\0'; p++) {
           if (islower(*p) || isdigit(*p) || *p == '_') {
               putchar (*p);
           }
        }
        putchar ('\n');
    }
    return 0;
}

这是我的“版本”

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void) {
    int i;
    char *p;
    char stg[] = "hello";
   // if (argc > 1) {
        for (p = stg[1]; *p != '\0'; p++) {
           if (isalnum(*p) || *p == '_') {
               putchar (*p);
           }
        }
        putchar ('\n');
     return 0;
}

最佳答案

在你的代码中 p 是一个指针。将 p = stg[1]; 更改为 p = &stg[1];

关于c - 我怎样才能让 isalnum() 正确地接受字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10559151/

相关文章:

java - 防止请求在 JSON 文件更新时从 json 文件中获取数据

c - 产生新进程 v 线程的动机

c - 时区文件到 POSIX 时区字符串

创建一个简单的解析器

c - 将 fgets() 与管道一起使用

c++ - 了解ELF执行程序的SHT_NOTE节 “.note.ABI-tag”

计算文件中的字符我找不到问题

c - 数字总和程序无法为更大的数字提供正确的 O/P

c - tail exec 在管道中不能很好地工作(直到父进程死亡才输出!)

客户端-服务器套接字 C 代码 : Server doesn't execute code after "read" until another line is sent