C:替换转义字符 esp '\\'

标签 c escaping character

我的代码的这一部分应该用括号中的十六进制代码替换所有读取的转义字符(因为它们可能会弄乱东西)。除了反斜杠“\\”的转义字符之外,它都有效,我不明白为什么。

if(bt[j] == '\\')
{
   switch(bt[j+1])
   case 'n':
      strcat(at,"(0x0a)");break;
   case ...
      ...
   case '\\':
      strcat(at,"(0x5c)");break;
   ...
...
}

编辑: 我需要删除不是转义字符的反斜杠。 所以“hello\nb\ob”将是“hello(0x0a)bob” 而“hello\nb\\ob”将是“hello(0x0a)b(0x5c)ob”

最佳答案

#include <stdio.h>
#include <string.h>

void func(char at[], char bt[]){
    int j;
    for(j=0; bt[j]; ++j){
        switch(bt[j]){
        case '\n':
            memcpy(at, "(0x0a)", 6);
            at += 6;
            break;
        case '\\':
            memcpy(at, "(0x5c)", 6);
            at += 6;
            break;
        //...
        default:
            *at++ = bt[j];
        }
    }
    *at = '\0';
}

int main(){
    char at[256];
    char *bt;
    func(at, "hello\nb\ob");
    puts(at);
    func(at, "hello\nb\\ob");
    puts(at);
    return 0;
}

关于C:替换转义字符 esp '\\',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25828509/

相关文章:

security - 为什么 XSS 注入(inject)需要对 & 进行转义

html - 使用C通过cgi生成简单的html页面

c - 如何解决C中的类型冲突问题

escaping - 如何在 YAML 中转义指示符(冒号和连字符)

python - 双转义字符

c - 骨架代码 : character pointers struggles

arrays - 按用户输入的顺序返回 ASCII 字符的计数 C

Java:复制文本文件时覆盖一个字符

c - 使用 ksocket 导致内存泄漏

c - 如何将结构传递给 C 中的函数