函數char *my(char *s, int n)
取字符串s
,並將s
的字符移位n
個地方,導致字符環繞字符串。如何使用指針將字符串拆分爲兩個字符串? C語言
例如,給出字符串「This is my Apple!」 ,n的移= 2將導致
- 的String1: 「TH」
- String2的: 「是我的蘋果!」
if n < 0它會向負方向移動。
函數char *my(char *s, int n)
取字符串s
,並將s
的字符移位n
個地方,導致字符環繞字符串。如何使用指針將字符串拆分爲兩個字符串? C語言
例如,給出字符串「This is my Apple!」 ,n的移= 2將導致
if n < 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;
}
如何使用return,而不是使用printf – bob90937
我修改了函數來返回'char *'而不是打印結果。 –
該字符串實際上是一個char-array 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;
}
你可以使用'strstr()',如果發現子字符串,它將被返回。 –
使用[memcpy](http://en.cppreference.com/w/c/string/byte/memcpy)? – BLUEPIXY
據我所知,你所描述的功能並不存在於通常的庫中。但是,規範的內容如同可以用它來回答標題中的問題一樣。 – Yunnosch