循环左移
请修改编辑器中的代码,完成以下功能:实现函数 fun,把一个字符串循环左移 m 位(已给出每次左移一位的函数 fun1,可反复调用它)。 程序从当前目录下的 in.txt 逐行读取数据,每行的格式是:一个整数 m,一个空格,然后是待处理的字符串。对每一行把字符串循环左移 m 位后写入 out.txt,一行对应一行。 程序不从键盘读取输入,屏幕上也没有输出。 文件保证m为非负int整数,字符串为不含空白的ASCII文本,长度为1到79。只需补全fun,调用已给出的fun1;其余代码保留。
#include <stdio.h>
#include <string.h>
#define N 80
void fun1(char *w) /* 本函数的功能是将字符串中字符循环左移一个位置 */
{
int i;
char t;
t = w[0];
for (i = 0; i < (int)strlen(w) - 1; i++)
w[i] = w[i + 1];
w[strlen(w) - 1] = t;
}
void fun(char *w, int m) /* 可调用 fun1 函数左移字符 */
{
}
void NONO(void)
{
FILE *rf = fopen("in.txt", "r");
FILE *wf = fopen("out.txt", "w");
char a[N];
int m;
if (!rf || !wf) {
perror("open file");
return;
}
while (fscanf(rf, "%d %s", &m, a) == 2) {
fun(a, m);
fprintf(wf, "%s\n", a);
}
fclose(rf);
fclose(wf);
}
int main(void)
{
NONO();
return 0;
}
控制台
调试终端
