[英]How to use pointer to split the string into two strings? C language
该功能char *my(char *s, int n)
采用一个字符串s
和转移的特点s
通过n
的地方,导致字符环绕的字符串。
例如,给定字符串“这是我的苹果!” , n = 2 的偏移将导致
如果 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.