c - 如何在 C 中将 int 添加到 char
问题描述
我正在尝试为 char 数组中的每个 char 添加一个 int ,但我不知道该怎么做。
void Offset(char sirDeCaractere[100], int x)
{
int i = 0;
while (sirDeCaractere[i] != '\0')
{
sirDeCaractere[i] += x;
i++;
}
printf("%c", sirDeCaractere[i]);
}
我一直在尝试做这样的事情一段时间,但我无法弄清楚。像这样写我不认为它会由于指针运算而起作用,但我没有其他想法。
例如:
Input:
sirDeCaractere = cuvant
x = 5
Output:
hz{fsy
我应该如何编辑我的代码以实现所需的输出?
现在我的程序正在崩溃(正如我所说,因为 sirDeCaractere[i] += x; 是指针算术)。
谢谢。
解决方案
你要这个:
#include <stdio.h>
void Offset(char sirDeCaractere[100], int x)
{
int i = 0;
while (sirDeCaractere[i] != '\0')
{
sirDeCaractere[i] += x;
i++;
}
// remove this line, it makes no sense printf("%c", sirDeCaractere[i]);
}
int main(void)
{
char test[] = "ABCD";
Offset(test, 1);
printf("%s\n", test);
}
输出:
BCDE
我猜你没有显示的代码是这样的:
...
char *test = "ABCD";
Offset(test, 1);
...
或者
Offset("ABCD", 1);
这将在大多数平台上崩溃。阅读此表格更多信息:为什么我在写入用字符串文字初始化的“char *s”而不是“char s[]”时会出现分段错误?
奖金:
请注意,[100]
以下内容是无用的:
void Offset(char sirDeCaractere[100], int x)
你可以写:
void Offset(char sirDeCaractere[], int x)
或者 :
void Offset(char *sirDeCaractere, int x)
做同样的事情。