シチュエーション別同一目的 -- Part1


  C++ API+ランタイムライブラリ



  
cl.exe lang_02.cpp
  
↑ビルド

  
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <mbstring.h>


int compare( const void *arg1, const void *arg2 );

int main() {

	LPTSTR lpBuffer = NULL;
	DWORD nSize;	// バッファサイズ

	// 必要なバッファサイズを取得する
	nSize = GetEnvironmentVariable(
		"PATH",
		lpBuffer,
		0
	);

	// バッファを動的に確保する
	HANDLE hMem = GetProcessHeap();
	lpBuffer = (LPTSTR)HeapAlloc(hMem, 0, nSize); 
	if ( lpBuffer == NULL ) {
		printf( "%s\n", "メモリの確保に失敗しました" );
		return 0;
	}

	// PATH 環境変数取得( 1回目 )
	GetEnvironmentVariable(
		"PATH",
		lpBuffer,
		nSize
	);

	// トークンの数をカウントする
	unsigned char* tok;
	int nCount;		// トークンの数

	tok = _mbstok( (unsigned char *)lpBuffer, (const unsigned char *)";" );
	nCount = 0;
	while( tok != NULL ) {
		nCount++;
		tok = _mbstok( NULL, (const unsigned char *)";" );
	}

	// トークンをセットするのに必要なメモリを確保する
	LPTSTR *strArray = (LPTSTR *)HeapAlloc(hMem, 0, sizeof(LPTSTR)*nCount + 256 ); 

	// PATH 環境変数取得( 2回目 )
	GetEnvironmentVariable(
		"PATH",
		lpBuffer,
		nSize
	);

	// トークンを配列にセットする
	tok = _mbstok( (unsigned char *)lpBuffer, (const unsigned char *)";" );
	nCount = 0;
	while( tok != NULL ) {
		strArray[nCount] = (LPTSTR)tok;
		nCount++;
		tok = _mbstok( NULL, (const unsigned char *)";" );
	}

	// 配列ソート
	qsort( (void *)strArray, nCount, 4, compare );

	// 書き込み
	FILE *fp;
	fp = fopen( "result.txt", "wt" );
	int i;
	for( i = 0; i < nCount; i++ ) {
		fprintf( fp, "%s\n", strArray[i] );
	}
	fclose( fp );

	// メモリ開放
	HeapFree( hMem, 0, strArray );
	HeapFree( hMem, 0, lpBuffer );

	return 0;
}

// *********************************************************
// ソート用比較関数
// *********************************************************
int compare( const void *arg1, const void *arg2 )
{
	return lstrcmp( *((char **)arg1), *((char **)arg2) );
}
  

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vclib/html/_crt_qsort.asp










  infoboard   管理者用   
このエントリーをはてなブックマークに追加




SQLの窓  天気  IT用語辞典
Yahoo!ニュース  マルチ辞書
PHP マニュアル  Google URL短縮 


フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ