首页 > 解决方案 > 在 C 中增加一个字符

问题描述

我对在 c 中增加一个字符有点不理解。假设:

char c = 'A';

现在,如果我这样做c+1,价值c将是'B'。这可以。但是为什么当我执行以下操作时:

c = c + argv[1][2]

那我'r'进去了c为什么?

请假设参数是"in12345",则argv[1][2]等于1

我想要做的是一些输入,假设 ABCDEF 是在我以循环方式从参数中接收 BDFHJG 时接收 BDFHJG。但我不明白为什么上述内容对我不起作用。

为什么它不起作用,我该怎么做才能解决它?

标签: cchardigits

解决方案


请假设参数为 in12345,则 argv[1][2] 等于 1。

不,不是。它等于'1', 或(假设为 ASCII)49。

'A'(65) + '3'(49) = 'r'(114)

如果1要从字符中获取整数,则'1'需要对其进行转换。演员表无济于事;一种方法是使用一些算术魔法:

char c = 'A';

const int valToAdd = argv[1][2] - '0';
c = c + valToAdd;

// c is now 66, or `'B'`

但是,这有点小技巧,如果argv[1][2]不在 to 范围内'0',它将中断'9'。您可以进一步研究从 ASCII 数字中获取整数的最佳(更好?)方法。


推荐阅读