我目前正在为服务器编写日志解析脚本,为了防止用户输入恶意命令,我需要从输入的字符串中过滤掉除字母数字字符(同时允许下划线)之外的所有字符,但不幸的是我不知道如何要做到这一点,所以我只是想知道是否有人可以告诉/告诉我要做什么才能实现这一目标,谢谢!还举个例子,假设有人输入以下内容: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;
}