鱼C论坛

 找回密码
 立即注册
查看: 1027|回复: 3

[已解决]求助,这个C语言程序的作用是?主要里面delcomm函数的作用。

[复制链接]
发表于 2020-6-1 22:06:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include"stdio.h"
#include<stdlib.h>
void main()
{
        void delcomm(FILE * fp1, FILE * fp2);
        FILE* fp1, * fp2;
        char source[80], target[80];
        printf("Input source file name:");
        gets(source);
        printf("Input target file name:");
        gets(target);
        if ((fp1 = fopen((source), "r")) == NULL)
        {
                printf("Can't open source file.\n");
                exit(0);
        }
        if ((fp2 = fopen((target), "w")) == NULL)
        {
                printf("Can't open target file.\n");
                exit(0);
        }
        delcomm(fp1, fp2);
}
void delcomm(FILE* fp1, FILE* fp2)
{
        int c, i = 0;
        while (c = fgetc(fp1) != EOF)
                if (c == '\n')
                        fprintf(fp2, "\n");
                else
                        switch (i)
                        {
                        case 0:if (c == '/')        i = 1;
                                  else         fprintf(fp2, "%c", c);
                                break;
                        case 1:if (c == '*')        i = 2;
                                  else
                        {
                                fprintf(fp2, "/%c", c);
                                i = 0;
                        }
                                  break;
                        case 2:if (c == '*')  i = 3;
                                break;
                        case 3:i = (c == '/') ? 0 : 2;
                                break;
                        }
}
最佳答案
2020-6-1 22:40:22
本帖最后由 我叫MD 于 2020-6-1 22:41 编辑

这程序有问题啊   感觉c的值只有 0 和 1,  所以根据条件判断 只会一直执行你所写的第34行代码,然后退出

可能不同的编译器会编译不同的版本,我拿vs2019调试过了  c的值只会为1或者0  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-1 22:40:22 | 显示全部楼层    本楼为最佳答案   
本帖最后由 我叫MD 于 2020-6-1 22:41 编辑

这程序有问题啊   感觉c的值只有 0 和 1,  所以根据条件判断 只会一直执行你所写的第34行代码,然后退出

可能不同的编译器会编译不同的版本,我拿vs2019调试过了  c的值只会为1或者0  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-1 22:44:26 | 显示全部楼层
#include <stdio.h>
#include <stdlib.h>
void main()
{
    FILE* fp1, * fp2;
        void delcomm(FILE* fp1, FILE* fp2);
    char source[80], target[80];
    printf("Input source file name: ");
    gets(source);
    printf("Input target file name: ");
    gets(target);
    if ((fp1 = fopen(source, "r")) == NULL)
    {
        printf("Can't open FILE.\n");
        exit(0);
    }
    if ((fp2 = fopen(target, "w")) == NULL)
    {
        printf("Can't create target file.\n");
        exit(0);
    }
    delcomm(fp1, fp2);
    fcloseall();
}
void delcomm(FILE* fp1, FILE* fp2)
{
    int c, i = 0;
    while (((c = fgetc(fp1)) != EOF))
          if (c == '\n')
            fprintf(fp2, "\n");
        else
            switch (i)
            {
            case 0: if (c == '/')        i = 1;
                                         else        fprintf(fp2, "%c", c);
                                        break;
            case 1: if (c == '*')        i = 2;
                  else
            {
                fprintf(fp2, "/%c", c);
                i = 0; 
            }
                                  break;
            case 2: if (c == '*')         i = 3;
                 break;
            case 3: i = (c == '/') ? 0 : 2;
                break;
            }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-1 22:45:10 | 显示全部楼层
改下代码,这个好像是复制文本的,但是不知道那个自定义的函数是在干嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 20:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表