joker_xue_ 2022-03-03 13:25 采纳率: 60%
浏览 62
已结题

关于#c语言#的问题:将字符串从指定下标p处开始的前q个字符(包括p处字符,q≤p+1)复制到字符串的结尾,q≤p+1)复制到字符串的结尾,形成的新串保存到另一个文件中

在main函数中创建一个文件,将键盘输入的字符串写入文件中。打开该文件,读出字符串。将字符串从指定下标p处开始的前q个字符(包括p处字符,q≤p+1)复制到字符串的结尾,形成的新串保存到另一个文件中。比如,abcdefg,从下标3处开始的前2个字符复制到字符串的结尾,得新串:abcdecd。要求:p和q均由键盘输入。

  • 写回答

2条回答 默认 最新

  • 关注

    img


    img

    
     
    //在main函数中创建一个文件,将键盘输入的字符串写入文件中。打开该文件,读出字符串。
    //将字符串从指定下标p处开始的前q个字符(包括p处字符,q≤p+1)复制到字符串的结尾,形成的新串保存到另一个文件中。
    //比如,abcdefg,从下标3处开始的前2个字符复制到字符串的结尾,得新串:abcdecd。要求:p和q均由键盘输入。
    #pragma warning(disable:4996) //开头加这句或项目、属性、配置属性、C/C++、预处理器、预处理器定义中添加“_CRT_SECURE_NO_WARNINGS”
    #include <stdio.h>
    #include <string.h>
    int main() {
        FILE *f;
        char s[80];
        char t[80*2];
        int p,q;
     
        f=fopen("a.txt","w");
        fgets(s,80,stdin);
        if ('\n'==s[strlen(s)-1]) s[strlen(s)-1]=0;
        fprintf(f,"%s",s);
        fclose(f);
        f=fopen("a.txt","r");
        fgets(s,80,f);
        fclose(f);
        printf("%s",s);
        while (1) {
            printf("\ninput p(0<=p<=%d) q(1<=q<=p+1):",strlen(s)-1);
            fflush(stdout);
            rewind(stdin);
            if (2==scanf("%d%d",&p,&q)) {
                if (0<=p && p<=strlen(s)-1 && 1<=q && q<=p+1) break;
            }
        }
        strncpy(t,s,strlen(s)-q);
        t[strlen(s)-q]=0;
        strncat(t,s+p-q+1,q);
        f=fopen("b.txt","w");
        fprintf(f,"%s",t);
        fclose(f);
        return 0;
    }
    //d:\test>test.exe
    //abcdefg
    //abcdefg
    //input p(0<=p<=6) q(1<=q<=p+1):3 2
    //
    //d:\test>type a.txt
    //abcdefg
    //d:\test>type b.txt
    //abcdecd
    //d:\test>
     
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月11日
  • 已采纳回答 3月3日
  • 创建了问题 3月3日