m0_67495096 2022-03-02 00:36 采纳率: 100%
浏览 26
已结题

C语言文件相关的问题,希望友友们可以帮我看一下哪里有问题,望指导。

#include <stdio.h>
#include<stdlib.h>
#include <string.h>
#define N 80
void main()
{
int i,p,q,j;
char a[N],c[N];

FILE *fp1,*fp2;
char ch;
fp1=fopen("D:\a.txt","w");
if(fp1==NULL)
{
printf("打开失败1\n");
exit(0);
}
printf("输入字符串:");
while((ch=getchar())!='\n')
{
fputc(ch,fp1);
}
fclose(fp1);
if((fp1=fopen("D:\a.txt","r"))==NULL)
{
printf("打开失败a\n");
exit(0);
}
if((fp2=fopen("D:\b.txt","w"))==NULL)
{
printf("打开失败b\n");
exit(0);
}
if(p+q-1<N)
{
for(i=p;i<=p+q;i++)
a[j++]=c[i];
for(i=p+q;i<N;i++)
a[j++]=c[i];
}
else
{
for(i=p;i<N;i++)
a[j++]=c[i];
for(i=0;i<p;i++)
a[j++]=c[i];
}
fclose(fp1);
fclose(fp2);
}
这是题目
在main函数中创建一个文件,将键盘输入的字符串写入文件中。打开该文件,读出字符串。将字符串从指定下标p处开始的q个字符(包括p处字符)复制到字符串的开头(若p后没有q个字符,则按实际字符数复制),形成的新串保存到另一个文件中。比如,abcdefg,从下标3处开始的2个字符复制到字符串的开头,得新串:decdefg。要求:p和q均由键盘输入。

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-03-02 11:25
    关注

    修改如下,供参考:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define N 80
    void main()
    {
        int i, p, q, j, k;
        char a[N], c[N];
    
        FILE* fp1, * fp2;
        char ch;
        fp1 = fopen("D:\\a.txt", "w"); //fp1 = fopen("D:\a.txt", "w");
        if (fp1 == NULL)
        {
            printf("打开失败1\n");
            exit(0);
        }
        printf("输入字符串:");
        while ((ch = getchar()) != '\n')
        {
            fputc(ch, fp1);
        }
        fclose(fp1);
        if ((fp1 = fopen("D:\\a.txt", "r")) == NULL)  //(fp1 = fopen("D:\a.txt", "r")
        {
            printf("打开失败a\n");
            exit(0);
        }
        i = 0;
        while ((ch = fgetc(fp1)) != EOF)
        {
            a[i++] = ch;
        }
        fclose(fp1);
        printf("请输入p q:");
        scanf("%d%d", &p, &q);
        for (j = p, k = 0; j < q + p && j < i; j++)
            c[k++] = a[j];
        for (j = k; j < i; j++)//(若p后没有q个字符,则按实际字符数复制)
            c[k++] = a[j];
        c[k] = '\0';
        if ((fp2 = fopen("D:\\b.txt", "w")) == NULL)  //(fp2 = fopen("D:\b.txt", "w")
        {
            printf("打开失败b\n");
            exit(0);
        }
        k = 0;
        while (c[k] != '\0')
        {
            fputc(c[k], fp2);
            k++;
        }
        fclose(fp2);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 於黾 2022-03-02 07:49
    关注

    不是让你读出文件吗,你读文件的代码在哪呢

    评论
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 基带到底是什么?为什么手机厂和厂外完全两个概念
  • ¥15 怎么下载MySQL,怎么卸干净原来的MySQL
  • ¥15 网络打印机Ip地址自动获取出现问题
  • ¥15 求局部放电案例库,用于预测局部放电类型
  • ¥100 QT Open62541
  • ¥15 stata合并季度数据和日度数据
  • ¥15 谁能提供rabbitmq,erlang,socat压缩包,记住版本要对应
  • ¥15 Vue3 中使用 `vue-router` 只能跳转到主页面?
  • ¥15 用QT,进行QGIS二次开发,如何在添加栅格图层时,将黑白的矢量图渲染成彩色
  • ¥50 监控摄像头 乐橙和家亲版 保存sd卡的文件怎么打开?视频怎么播放?