如何用特定的整数值替换字符串中的字母?

时间:2015-08-04 11:57:20

标签: c string replace char int

我有一个包含char数组'long_string'的C程序,看起来像这样。

 long_string[16] = "AHDAHDAHDAHDAHDA";

我希望将字符串中的字母替换如下: A-0,H-1,D-2。

有人能告诉我怎么能实现这个目标?我尝试在线查看,但大多数案例显示字母转换为ASCII值,这不是我需要的。提前感谢你的时间:))

3 个答案:

答案 0 :(得分:1)

int i = 0;
for( ; i < size ; i++ ){

  switch( long_string[i] ){
    case 'A':
      long_string[i] = '0';
      break;
    // and so on...
  }

}

答案 1 :(得分:1)

如果你想翻译大写字母字符,你可以使用查找表并使用char值少于&#39; A&#39;对其进行索引,例如:

                  //ABCDEFGHIJKLMNOPQRSTUVWXYZ
const char xlat[]=("0  2   1                  ");
..
..

newChar=xlat[oldChar-'A'];

或者,对于您似乎想要的,更通用的形式:

const char xlat[]=("\x00\x20\x20\x02\x20\x20\x20\x01\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20");

请注意,将字符转换为包含&#39; \ 0&#39;将输出数组作为C风格的字符串呈现为不可用。

答案 2 :(得分:1)

您定义字符串的方式,它不会以空终止(16不足以适应空终止符)。除此之外,你想要的应该是相当容易的:

int i = 0;
char long_string[] = "AHDAHDAHDAHDAHDA";
int len = strlen(long_string);
for(i = 0; i<len; i++)
{
  if(long_string[i] == 'A')
   long_string[i] = '0';
  else if(long_string[i] == 'H')
   long_string[i] = '1';
  // etc.
}