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

时间:2014-09-13 22:52:14

标签: 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”将是“你好(0x0a)bob” 并且“hello \ nb \\ ob”将是“hello(0x0a)b(0x5c)ob”

1 个答案:

答案 0 :(得分:1)

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