繁体   English   中英

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

[英]How to use pointer to split the string into two strings? C language

该功能char *my(char *s, int n)采用一个字符串s和转移的特点s通过n的地方,导致字符环绕的字符串。

例如,给定字符串“这是我的苹果!” , n = 2 的偏移将导致

  • 字符串 1:“Th”
  • String2:“是我的苹果!”

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

该字符串实际上是一个字符数组 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;
}

您可以只使用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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM