C 如何让isalnum()正确接受字符串

C 如何让isalnum()正确接受字符串,c,C,我试图转换一些代码,这些代码旨在从命令行参数中删除除“\u1”以外的所有非数字字符,除了命令行参数之外,我试图让代码接受常规字符串的输入,我试图将代码转换为接受字符串,但我一直遇到此错误 words.c:9: warning: assignment makes pointer from integer without a cast 我很困惑我做错了什么,所以我真的很感谢任何能帮助我解决这个问题的人,谢谢 这里还有接受命令行参数的原始代码 #include <stdio.h> #in

我试图转换一些代码,这些代码旨在从命令行参数中删除除“\u1”以外的所有非数字字符,除了命令行参数之外,我试图让代码接受常规字符串的输入,我试图将代码转换为接受字符串,但我一直遇到此错误

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;
}
#包括
#包括
#包括
int main(int argc,字符**argv){
int i;
char*p;
如果(argc>1){
对于(p=argv[1];*p!='\0';p++){
if(islower(*p)| isdigit(*p)| |*p=='|'){
putchar(*p);
}
}
putchar('\n');
}
返回0;
}
这是我的“版本”

#包括
#包括
#包括
内部主(空){
int i;
char*p;
char stg[]=“你好”;
//如果(argc>1){
for(p=stg[1];*p!='\0';p++){
如果(isalnum(*p)| |*p=='|'){
putchar(*p);
}
}
putchar('\n');
返回0;
}

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

我想他真正想做的只是p=stg@VictorVasiliev可能是:-?或者跳过第一个元素是有意的?谢谢!我很惊讶我忽略了这一点,以很好的速度掌握了C的窍门,尽管希望这样的东西在未来会少很多,也@VictorVasiliev谢谢你的指点虽然stg本身不起作用,所以我只使用stg[0]相反,我认为他真正想做的只是p=stg@VictorVasiliev可能是:-?或者跳过第一个元素是有意的?谢谢!我很惊讶我忽略了这一点,以一个很好的速度掌握C的窍门,虽然希望这样的东西在未来会少很多,也@VictorVasiliev感谢你指出这一点out,虽然stg本身不起作用,所以我只使用stg[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;
}