gpt4 book ai didi

c - 我如何过滤字符串以便只允许字母数字字符通过

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:01 25 4
gpt4 key购买 nike

我目前正在为服务器编写日志解析脚本,为了防止用户输入恶意命令,我需要从输入的字符串中过滤掉除字母数字字符(同时允许下划线)之外的所有字符,尽管不幸的是我这样做了不知道该怎么做,所以我只是想知道是否有人可以告诉/告诉我该怎么做才能实现这一目标,谢谢!再举个例子,假设有人输入以下内容:stack#@_over%flow,然后程序会过滤掉非字母数字字符(下划线除外),以便只生成 stack_overflow,这在 bash 中的等价物是

tr -dc [:alnum:]'_'

还忘了说我已经尝试了以下方法,但仍然遇到一些问题(例如,如果字符串中包含“!”,我会得到“-bash:!:找不到事件”

#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;
}

最佳答案

找到您正在处理的字符串的长度,分配一个该长度的新字符串,遍历输入字符串的每个字符,如果它是字母数字(使用 ctype.h 中的 isalnum())将字符放入结果字符串,否则就跳过它。空终止并将结果字符串复制到输入字符串,释放分配的字符串并返回结果。

关于c - 我如何过滤字符串以便只允许字母数字字符通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10557987/

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