C Language Logo
C语言二级在线二级在线
首页选择题程序题成为会员帮助其他科目

循环左移

请修改编辑器中的代码,完成以下功能:实现函数 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;
}

控制台

调试终端

准备就绪