[英]How to escape special characters in a char* string in C
我從fgets函數得到一個字符串。 我想將該字符串清除為一個新字符串,以便第二個字符串都轉義了所有特殊的和潛在的危險字符,類似於在PHP中使用addslashes()或mysql_real_escape_string()可以執行的操作。 如PHP手冊中所定義:
mysql_real_escape_string()調用MySQL的庫函數mysql_real_escape_string,該函數將反斜杠添加到以下字符之前:\\ x00,\\ n,\\ r,\\,','和\\ x1a。
我既無意將此數據發送到mysql查詢,也無意與任何SQL Server建立當前連接,只是希望在運行於Linux機器上的簡單CLI C程序中將其清除。 這將用於帶有Splint的簡單靜態分析中。 我在這里調查了其他幾個問題,但是還沒有。
void clean_string(char * origin, char * destiny)
{
//copies the origin to destiny scaping characters
}
您可以直接使用字符串。 循環遍歷字符數組的每個位置,如果您有特殊字符,則只需將其替換為其他字符即可。
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "Hello\tworld\n!";
int i, len;
len = strlen(str);
printf("%s\n", str);
for (i = 0; i < len; ++i) {
switch (str[i]) {
case '\n':
str[i] = '$';
break;
case '\t':
str[i] = '$';
break;
}
}
printf("%s\n", str);
return 0;
}
仍然不清楚為什么您認為該字符串具有“危險”字符,但是如果要轉義其中一些字符:
const char *str = "my dangerous";
const char *ooh = "aeoui\\";
char buf[BIG_ENOUGH];
size_t bp = 0;
for (size_t sp = 0; str[sp]; sp++) {
if (strchr(ooh, str[sp])) buf[bp++] = '\\';
buf[bp++] = str[sp];
}
buf[bp] = 0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.