Posted on 2012-08-12 14:14
hoshelly 閱讀(917)
評論(0) 編輯 收藏 引用 所屬分類:
Programming
編寫一函數strlshif(char *s, int n),其功能是把字符串s中的所有字符左移n個位置,字符串中的前n個字符移到最后。
代碼測試通過:
#include<stdio.h>#include<string.h>void strlshif(char *s, int n);void main(){ char str[]="0123456789"; strlshif(str,3); printf("%s\n",str);}void strlshif(char *s, int n){ int i,len; char ch; len=strlen(s); for(i=0;i<n;i++) { ch=s[0]; strncpy(s,s+1,len-1); s[len-1]=ch; }}那么若是不用strncpy函數功能,如何使指定的字符串左移n位?
代碼測試通過,如下:
#include<stdio.h>
#include<string.h>
int main()
{
char str[]="0123456789";
char sstr[80]={0}; //使用一數組儲存移動后的字符串
char *p;
int c,j;
static int i,n;
p=&str[0];
printf("input the number: \n");
scanf("%d",&n); //輸入要左移的前n個字符,即將這n個字符移動到最后面
c=n;
while( c-- && p++ ); //找到沒有移動過的剩下的全部字符,把它們儲存在數組sstr 中
for(i=0;i<strlen(str)-n;i++)
{
sstr[i]= *p;
p++;
}
p=&str[0]; //指針指向第一個字符
for(j=i;j<strlen(str);j++) //將要移動的字符一個一個地“接”到數組sstr后面
{
sstr[j]= *p;
p++;
}
sstr[j]='\0'; //最后字符串結尾用'\0'
printf("%s",sstr);
return 0;
}