回 帖 发 新 帖 刷新版面

主题:我的程序那里错了

#include<stdio.h>
#include<string.h>
#include<cstring>
int main()
{
    FILE *fp1,*fp2;            //定义两个文件指针指向A、B两个文本
    int ch[2000],ch2[1000];
    
    char filename1[20],filename2[20];    //输入两个文本的文件名
    printf("输入要被包含进去的文本文件名:");
    scanf("%s",filename1);
    printf("输入将%s文本包含的文件名:",filename1);
    scanf("%s",filename2);
    if((fp1=fopen(filename1,"r"))==NULL)        //以只读方式打开文本A
    {
        printf("打开文件%s失败,程序自动退出\n",filename1);
        return 0;
    }

    if((fp2=fopen(filename2,"r"))==NULL)        //以只读方式打开文本A
    {
        printf("打开文件%s失败,程序自动退出\n",filename2);
        return 0;
    }

    char p[20];                               //定义一个字符串,方便在文本中查找
    sprintf(p,"#include\"%s\"",filename1);    //将#include<filename1>格式化输入到数组p中
    int num=strlen(p);                          //算出字符串的长度
    
    int i=0,b,j;
    while((ch[i]=fgetc(fp2))!=EOF)            //开始读文本B中的内容到数组中
    {
        if(ch[i]=='#')        
            b=i;
        {
                for(j=0;j<=num;b++,j++)
            ch2[j]=ch[b];
            while(strcmp(ch2,p)==0&&ch[b]=fgetc(fp1)!=EOF)
            {
                
                b++;
                                           i=b;
            }
                        }
            i++;
    }
    int n=1
        fclose(fp1);
    fclose(fp2);
    if((fp2=fopen(filename2,"w")==NULL)
    {
        printf("打开文件失败,程序自动退出\n");
        return 0;
    }
    for(i=0;i<n;i++)
    {
        fputc(ch[i],fp2);
    }
    putchar(ch[i]);
    printf("\n");
    fclose(fp2);
    return 0;
}

回复列表 (共1个回复)

沙发

疑惑,这个程序怎么没写就开始读了,看了就摸不着头脑。
只能帮你说说语法问题了,p[20],lz就不怕溢出?
还有就是后面的ch[i]=='#',ch2[j]=ch[b];明显错误,还有ch2与P的比较肯定不对,ch2比p多出一个字符,绝对不会相等;
总之感觉lz写的很混乱,一步一步来,你是要做什么就按那一步写,别想着做跨越

我来回复

您尚未登录,请登录后再回复。点此登录或注册