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);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line