计划到印刷和数字之和在一个文本文件 [英] Program to print and sum numbers in a text file

查看:97
本文介绍了计划到印刷和数字之和在一个文本文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想写它打印在一个文件中的所有数字,然后把它们加起来的程序。我有两个问题:

I want to write a program which print all numbers found in a file and then add them up. I have two problems:


  1. 如何加起来的数字我打印?

  2. 为什么OUTPUT_FILE做我有这么多的逗号:

这里是我的code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define CHUNK 12

char *getWord(FILE *infile);
void clean(char *dirty);

char *getWord(FILE *infile)
{
    char *word, *word2;
    int length, cursor, c;

    word = (char*)malloc(sizeof(char)*CHUNK);
    if(word == NULL) return NULL;

    length = CHUNK;
    cursor = 0;

    while(!isspace(c = getc(infile)) && !feof(infile))
    {
        word[cursor] = c;
        cursor++;

        if(cursor >= length)
        {
            length += CHUNK;

            word2 = (char*)realloc(word, cursor);
            if(word2 == NULL)
            {
                free(word2);
                return NULL;
            }
            else 
            {
                word = word2;
            }
        }
    }

    word[cursor] = '\0';
    return word;
}

void clean(char *dirty)
{
    int i = 0, j = 0; 
    char *temp;

    temp = strdup(dirty);
    while(i < strlen(temp))
    {
        if(isdigit(temp[i]))
        {
            dirty[j] = temp[i];
            j++;
        }

        i++;
    }

    dirty[j] = '\0';
    free(temp);
}

int main(int argc, char *argv[])
{

    char *word;
    FILE *infile, *outfile;

    if(argc != 3)
    {
        printf("Missing argument!\n");
        exit(1);
    }

    infile = fopen(argv[1], "r");
    if(infile != NULL)
    {

        outfile = fopen(argv[2], "w");
        if(outfile == NULL)
        {
            printf("Error, cannot open the outfile!\n");
            abort();
        }
        else 
        {
            while(!feof(infile))
            {
                word = getWord(infile);
                if(word == NULL)
                {
                    free(word);
                    abort();
                }

                clean(word);

                fputs(word, outfile);
                fputs(",", outfile);
                free(word);
            }
        }
    }
    else 
    {
        printf("Error, cannot open the outfile!\n");
        abort();
    }

    fclose(infile);
    fclose(outfile);
    return 0;
}

INFILE:

infile:

推荐答案

您也越来越因为这个 -

You are getting , because of this -

fputs(",", outfile);

这篇关于计划到印刷和数字之和在一个文本文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆