讲解对象:移动字符串 作者:融水公子 rsgz
要求: 原来的字符串 ABCDEFGHIJK m=3;移动后字符串的内容是DEFGHIJKABC 编写实现这样的功能的函数 #include<stdio.h> #include<stdlib.h> #include<string> #define N 81 void fun(char *w, int m) { char t[N]; //同时处理两个数组 需要两个循环变量 int i, j; for (i = 0; i<m; i++) { t[i] = w[i];//前半截字符存入 t数组 } j = 0; for (i = m; w[i] != '\0'; i++){//i=m等价于m+1开始 直到字符串结束 w[j] = w[i];//后半截字符存入 w数组的开始 j++; } for (i = 0; i<m; i++) { w[j] = t[i];//前半截的字符接入后半截的后面 j++; } //字符移位后 由于字符串的长度并没有发生改变 不需要专门处理字符串的末尾\0 } int main() { char a[N] = "ABCDEFGHIJK";//a[N]存储ABC int m; FILE *out;//文件指针out printf("这个原先的字符串是:\n"); puts(a); printf("输入位置:\n"); scanf_s("%d", &m); fun(a, m); printf("移动之后的字符串是:\n"); puts(a); printf("\n"); out = fopen("d:\\out.txt", "w"); fun(a, strlen(a) - m); fprintf(out, "%s\n", a); fun(a, 3); fprintf(out, "%s\n", a); fclose(out); system("pause"); return 0; }
|