首页 > 解决方案 > 如何在 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; 是指针算术)。

谢谢。

标签: c

解决方案


你要这个:

#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)

做同样事情。


推荐阅读