首先,这是一项家庭作业,所以让我们摆脱它,我不是在寻找免费代码。
我无法为此使用数组。字符串似乎是C语言中的一个数组,因此它们不存在。
逻辑很简单,如果出现html标记,请将其删除或执行\ n或\ n \ n。那里没有问题。
似乎我必须在c = getc()中使用stdio.h函数,因为所有其他函数似乎都在使用或创建数组。

我需要有关如何回溯的提示。
所以
if(c == '>')
我需要检查c-1, c-2,c-3等以检查前一个,如果我找到<br \> than write c = \n instead of <br \>.
逻辑很简单。
我的问题是getc()返回与给定字符的ASCII码相对应的int值,并根据该代码写入所述字符。

对于文件解析,我目前正在使用do{while c != EOF,尽管看起来for(c = getc(fp); c != EOF)可以做到这一点,但是我有同样的问题,循环由c决定。
如果getc()是错误的方法,请告诉我。我宁愿自己尝试,也不愿意给教授打电话。但是我不能使用任何数组,即捕获器。

干杯。
编辑:这是我目前的实现,如果有帮助。

void main()
{

    FILE *ifp, *ofp;
    int c;
    int n = 0;

    ifp = fopen("prog1in1.txt", "r");
    if(ifp == NULL){


    }
    ofp = fopen("prog1in1out.txt", "w");

    do{
        c = getc(ifp);

        if(c == '>')
            c = 'D';//just a test placeholder D holds no relevence:

            putc(c, ofp);
    }while(c !=EOF);

    for(c = getc(ifp); c!= EOF;)

    fclose(ifp);









}

最佳答案

您到底想做什么才能为您提供帮助。如果您正在读取文件fseek
可用于回溯。

编辑:

每次调用getc()时,都将光标移到一个位置,这样就可以计算出您所在的位置
文件。使用fseek(fptr, 10, SEEK_SET)明确表示要从文件的开头移10个位置。因此,如果count是您所在的位置fseek(fptr, count - 1, SEEK_SET)
是以前的一个地方。有帮助吗?

编辑2:

int c1,c2,c3,c4,c5;
while( (c = getc(ifp)) != EOF ){
    count++;

    if(c == '>'){
        fseek(ifp, count - 6, SEEK_SET);
        c1 = getc(ifp);
        c2 = getc(ifp);
        c3 = getc(ifp);
        c4 = getc(ifp);
        c5 = getc(ifp);

        if(c1 == '<' && c2 == 'b' && c3 == 'r' && c4 == 32 && c5 == '\'){putc(D, ofp);}

        fseek(ifp, count, SEEK_SET);
    }
}


编辑3

"<br />";
"<h1>";
"<a-href /a>";

int c,c1,c2,c3,c4,c5;
while( (c = getc(ifp)) != EOF ){
    count++;

    if(c == '<'){
        c = getc(ifp);
        count++;
        if(c == 'b'){
            c1 = getc(ifp);
            c2 = getc(ifp);
            c3 = getc(ifp);
            c4 = getc(ifp);
            if(c1 == 'r' && c2 == 32 && c3 == '/' && c4 == '>'){putc(D, ofp);}
            else{putc(c1, ofp); putc(c2, ofp); putc(c3, ofp);}

            count += 4;
        }
        else if(c == 'h'){
            ......
        }
        else if(c == 'a'){
            .......
        }
        else{
            putc('<', ofp);
            putc(c, ofp);
        }
    }
    else{
        putc(c, ofp);
    }
}


这样的事情。

瓦尔特

10-07 15:10