标签:int 18 左移 char fun str res 2015
请编写函数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; }
标签:int,18,左移,char,fun,str,res,2015 来源: https://www.cnblogs.com/yungyj/p/15932756.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。