簡體   English   中英

如何在 C 中將 int 添加到 char

[英]How can I add an int to a char in C

我正在嘗試為 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

我應該如何編輯我的代碼以實現所需的 output?

現在我的程序正在崩潰(正如我所說,因為 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);
}

Output:

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)

同樣的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM