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

How to replace letters in a string with specific integer values?

我编写了一个 C 程序,其中包含一个看起来像这样的字符数组 'long_string'。

 long_string[16] = "AHDAHDAHDAHDAHDA";

我想按如下方式替换字符串中的字母: A-0, H-1, D-2.

有人能告诉我怎样才能做到这一点吗?我尝试在线查看,但大多数情况下都显示字母转换为 ASCII 值,这不是我需要的。提前感谢您抽出时间:)

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

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

}

如果要翻译大写字母字符,可以使用查找 table 并使用 char 值 less 'A' 对其进行索引,例如:

                  //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");

请注意,将字符转换为包含“\0”的集合将使输出数组无法用作 C 样式字符串。

按照您定义字符串的方式,它不会以空值终止(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.
}