如何将字符串分成不同的字符

时间:2014-03-17 00:38:15

标签: c

此外,我想在每个字母上添加一个键,如'a'+ 1 ='b'。所以我想拿一个字符串例如“Hello”然后做

    char 1 = H + 1;
    char 2 = E + 1;
         etc.
        printf("%c" + "%c" + "%c" + "%c" + "%c", 1 , 2 , 3 , 4 , 5);

我也希望自动化,因为IDK字符串可能有多长,以及它们将使用什么密钥。

3 个答案:

答案 0 :(得分:0)

您可以这样做:

    #include<stdio.h>
    #include<string.h>


    int main()
    {
        char text[] = "Hello";

         int i=0;
         int size= strlen(text);

         for(i=0;i<size;i++)
         {
              //something here  
         }

         return 0;

     }

答案 1 :(得分:0)

假设字符串是可变的,您可以在适当的位置更新它:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void update(char *s, int delta)
{
    while(*s)
        *s++ += delta;
}

int main(int argc, char **argv)
{
    char str[] = "Hello";
    update(str, 1);
    printf("Encoded: \"%s\"\n", str);
    update(str, -1);
    printf("Decoded: \"%s\"\n", str);
    return 0;
}

如果字符串是不可变的,则需要复制它,并更新副本。

int main(int argc, char **argv)
{
    const char str[] = "Hello";
    char *copy = strdup(str);
    update(copy, 1);
    printf("Encoded: \"%s\"\n", copy);
    update(copy, -1);
    printf("Decoded: \"%s\"\n", copy);
    free(copy);
    return 0;
}

答案 2 :(得分:-1)

您应该阅读C中的动态数组。

#include <stdio.h>
#include <string.h>

char* code(const char* message)
{
    int i = 0;
    char* coded;
    for (i = 0; i < strlen(message); i++)
    {
        coded[i] = message[i] - 3;
    }
    return coded;
}

char* decode(const char* message)
{
    int i = 0;
    char* coded;
    for (i = 0; i < strlen(message); i++)
    {
        coded[i] = message[i] + 3;
    }
    return coded;
}

int main()
{
    // This is dynamic allocated chars array
    char* message = "Hello World!";
    message = code(message);
    printf("%s\n", message);
    message = decode(message);
    printf("%s\n", message);
}