« C言語で要素を数える | トップページ | 第12回Phunコン JPCC »

2014年11月30日 (日)

続・C言語で要素を数える

昨日の続き。 中身が入っている配列の数をlast_indexに覚えさせる方式は分からないと言われたので、ID:zJNKuV6Eが書いたコードに近づけてみた。
// total.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"


int _tmain(int argc, char* argv[])
{
	char code3[50][100];
	int data3[50];

	// 初期化
	for( int i=0; i<50; i++)
	{
		strcpy( code3[i], "\0");
		data3[i] = 0;
	}

	if (argc != 4)
	{
		fprintf( stderr, "Usage: %s inputfile1 inputfile2 outputfile\n", argv[0]);
		exit(-1);
	}
	
	// 入力ファイル読み込み
	for( int file_index=1; file_index<=2; file_index++)
	{
		FILE* fp_in = fopen( argv[file_index], "r");
		if( fp_in == NULL)
		{
			fprintf( stderr, "Cannot open input file %s\n", argv[file_index]);
			exit(-2);
		}

		char read_code[100];
		int read_data;
		while( fscanf( fp_in, "%s %d", read_code, &read_data) != EOF)
		{
			for( int i=0; i<50; i++)
			{
				if( strcmp( code3[i], read_code) == 0) // ヒット
				{
					data3[i] += read_data;
					break;
				}
				if( strcmp( code3[i], "\0") == 0) // code3配列の最後まで探してもread_codeは無かった
				{
					strcpy( code3[i], read_code);
					data3[i] = read_data;
					break;
				}
				// 結論が出ないので次のdata3[i]をチェック
			}
		}

		fclose( fp_in);
	}

	// ファイル出力
	FILE* fp_out = fopen(argv[3], "w");
	if (fp_out == NULL)
	{
		fprintf(stderr, "Cannot open file %s\n", argv[3]);
		exit(-3);
	}

	for (int i = 0; i < 50; i++)
	{
		if( strcmp( code3[i], "\0") == 0)
			break;
		fprintf(fp_out, "%s %d\n", code3[i], data3[i]);
	}

	fclose(fp_out);

	return 0;
}

« C言語で要素を数える | トップページ | 第12回Phunコン JPCC »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1499066/58138131

この記事へのトラックバック一覧です: 続・C言語で要素を数える:

« C言語で要素を数える | トップページ | 第12回Phunコン JPCC »