现在的位置: 首页 > 综合 > 正文

转载两个C程序

2013年08月26日 ⁄ 综合 ⁄ 共 2694字 ⁄ 字号 评论关闭

代码非原创,先记下来:

1、播放影音(VC6下通过)

#include <windows.h>
#include <stdio.h>
#include <mmsystem.h>
#include <shellapi.h>
#include <AFXCOM_.H>
#pragma comment(lib,"winmm.lib")

void main()
{
	char str[128]={0};
	int i = 0;
	char buf[128]={0};
	
	MCI_OPEN_PARMS mciOpen;
	MCIERROR mciError;
	mciOpen.lpstrDeviceType = "mpegvideo";
	mciOpen.lpstrElementName = "G:\\My Videos\\MV\\Avril_Lavigne_-_Girlfriend_(Palladia)(1080p)-.mpg";  //在C盘根目录下放一首1.mp3,当然也可以将这里的路径换成你喜欢的
	
	mciError = mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,(DWORD)&mciOpen);
	if(mciError)
	{
		mciGetErrorString(mciError,buf,128);
		printf("%s\n",buf);
		system("pause");
	}
	UINT DeviceID = mciOpen.wDeviceID ;
	MCI_PLAY_PARMS mciPlay;
	
	mciError = mciSendCommand(DeviceID,MCI_PLAY,0 ,(DWORD)&mciPlay);
	if(mciError)
	{
		printf("send MCI_PLAY command failed\n");
		system("pause");
	}
	
	for(i=1;i<=500;i++)
	{
		Sleep(500);
		printf("%d",i);		
	}
}

等以后弄明白了,也许会觉得这是雕虫小技吧。STUDING!!!奋斗

2012/6/2

2、统计文件夹代码行数(VC6下通过)

/*
win32下文件夹遍历
转载于http://www.cnblogs.com/slash/archive/2010/06/14/1758324.html
基本算法:
void function(LPCTSTR lpszPath)
{
	开始查找
	if(没有找到文件)
		return ;
	do
	{
		if(找到的是目录)
			function(找到的目录)
		else
			对文件进行统计
	} while(查找下一个文件并成功)
}

用到的api函数和结构:
FindFirstFile
FindNextFile
typedef struct _WIN32_FIND_DATA
{
	DWORD dwFileAttributes;			// 文件属性
	FILETIME ftCreationTime;		// 文件创建时间
	FILETIME ftLastAccessTime;		// 文件最后一次访问时间
	FILETIME ftLastWriteTime;		// 文件最后一次修改时间
	DWORD nFileSizeHigh;			// 文件长度高 32 位
	DWORD nFileSizeLow;				// 文件长度低 32 位
	DWORD dwReserved0;				// 系统保留
	DWORD dwReserved1;				// 系统保留
	TCHAR cFileName[ MAX_PATH ];	// 长文件名
	TCHAR cAlternateFileName[ 14 ];	// 文件的可选名
} WIN32_FIND_DATA;
*/	
	
#include<windows.h>
#include<stdio.h>
#include<string.h>

void FindAllFile(LPCTSTR lpszPath);
int row,file;

int main(int argc, char **argv)
{
	LPCTSTR path="E:\\Computer Programming\\OJ";
	row=0;
	file=0;
	FindAllFile(path);
	printf("\n");
	printf("共有%d个c/c++源文件,%d行代码\n",file,row);

	return 0;
}

void FindAllFile(LPCTSTR lpszPath)
{
	TCHAR szFind[MAX_PATH];
	lstrcpy(szFind,lpszPath);
	lstrcat(szFind,"\\*.*");
	WIN32_FIND_DATA wfd;
	HANDLE hFind = FindFirstFile(szFind,&wfd);
	if(hFind==INVALID_HANDLE_VALUE)
		return ;
	do
	{
		//如果你所在的不是根目录,你将会看到“.”与“..”这两个目录——这是在资源管理器中看不到的。
		//dos下一个点代表的是当前目录,两个点代表的是上一级目录。若查找的到的是当前文件夹和上一级文件夹,则忽略。
		if(wfd.cFileName[0]=='.')
			continue;
		if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
		{
			TCHAR szFile[MAX_PATH];
			wsprintf(szFile,"%s\\%s",lpszPath,wfd.cFileName);
			FindAllFile(szFile);
		}
		else 
		{
			TCHAR szFile[MAX_PATH];
			wsprintf(szFile,"%s\\%s",lpszPath,wfd.cFileName);
			FILE *fp;
			if((fp=fopen(szFile,"r"))==NULL)
			{
				printf("一个文件打开失败!\n");
			}
			else 
			{
				int len=strlen(wfd.cFileName);
				if(wfd.cFileName[len-1]=='c'&&wfd.cFileName[len-2]=='.'||wfd.cFileName[len-1]=='p'&&wfd.cFileName[len-2]=='p'&&wfd.cFileName[len-3]=='c'&&wfd.cFileName[len-4]=='.')
				{
					file++;
					printf("%s\\%s\n",lpszPath,wfd.cFileName);
					char data[1000];
					while(fgets(data,1000,fp)!=NULL)
						row++;
				}
			}
			fclose(fp);
		}
	} while(FindNextFile(hFind,&wfd));
	FindClose(hFind);
}

 

抱歉!评论已关闭.