如何使用指针将字符串拆分为两个字符串? C语言

时间:2017-10-20 04:27:08

标签: c string pointers

函数char *my(char *s, int n)采用字符串s并将s的字符移动n个位置,导致字符环绕字符串。

例如,给定字符串"这是我的Apple!" ,n = 2的移位将导致

  • String1:" Th"
  • String2:"是我的Apple!"

如果n <0,它将向负方向移动。

2 个答案:

答案 0 :(得分:1)

字符串实际上是char数组char [] 您可以将strlen函数与for循环结合使用。

你可以将它放在一个函数中,从而创建自己的函数,根据输入N来移动字母。

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

int main()
{
    char string[] = "This is my Apple!";
    //Initialize "n" before initializing the string variables.
    int n = 2;
    int len = strlen(string);
    char string1[n];
    char string2[len - n];

    for(int i = 0;i<len;i++){
        if(i<n){
            string1[i]=string[i];
        }else{
            string2[i-n]=string[i];
        }
    }
    printf("string = %s\n",string);
    printf("string1 = %s\n",string1);
    printf("string2 = %s\n",string2);

    return 0;
}

答案 1 :(得分:1)

您可以使用printf分割字符串。如果您希望结果为char *,则必须分配一些内存并改为使用sprintf

以下是使用sprintf和内存分配返回char *

的示例
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *shift(char *string, int n)
{
    int len = strlen(string);
    char *shiftedString = malloc(len + 1);

    n %= len; // in case you shift over string length
    if (n < 0) n += len; // backward shift
    sprintf(shiftedString, "%s%*.*s", string + n, n, n, string);
    return shiftedString;
}

int main()
{
    char *result = shift("This is my Apple!", 2);
    printf("shifted string : %s\n", result);
    free(result);
    return 0;
}