m0_67472399 2022-03-02 00:44 采纳率: 50%
浏览 35
已结题

关于c语言的问题,希望uu们看看吧,感激不尽

在main函数中创建一个文件,将键盘输入的字符串写入文件中。打开该文件,读出字符串。将字符串从指定下标p处开始的q个字符(包括p处字符)复制到字符串的开头(若p后没有q个字符,则按实际字符数复制),形成的新串保存到另一个文件中。比如,abcdefg,从下标3处开始的2个字符复制到字符串的开头,得新串:decdefg。要求:p和q均由键盘输入。
#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);
}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-03-02 10:53
    关注

    修改如下,供参考:

    #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 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码