2015-18
请编写函数char *fun(char *str,int m),实现将输入的字符串每个字符“循环左移”m位。
例如,输入“ABCDE",则循环左移⒉位应输出“CDEAB”,
若输入“1234567”,则循环左移3位输出“4567123"。
在主函数中实现输入,调用函数fun,然后输出。
/* 请编写函数char *fun(char *str,int m),实现将输入的字符串每个字符“循环左移”m位。 例如,输入“ABCDE",则循环左移⒉位应输出“CDEAB”, 若输入“1234567”,则循环左移3位输出“4567123"。 在主函数中实现输入,调用函数fun,然后输出。 */ #include <stdio.h> #include <string.h> char *fun(char *str, int m) { int i = 0, len = strlen(str); char res[100]; for(int front = m ; front < len ; front++, i++) //将m及其以后的元素复制到res的前面 { res[i] = str[front]; } for(int rear = 0 ; rear < m ; rear++, i++) //将m以前的元素复制到res的后面 { res[i] = str[rear]; } strcpy(str, res); return str; //***这里不能直接返回res,因为局部函数调用完毕后会释放其内存,会导致数据丢失 } int main() { char s[100]; int m; printf("Please input string: "); scanf("%s",s); printf("Enter m: "); scanf("%d",&m); if(m>strlen(s)) { printf("\nData error.\n"); return 0; } printf("Result is: %s\n", fun(s,m)); return 0; }

浙公网安备 33010602011771号