标题:在这指出我的小作品的一些不足之处,交流一下,多多指教,希望能得到解决。
只看楼主
观弈寒儒
Rank: 7Rank: 7Rank: 7
来 自:自 来
等 级:黑侠
帖 子:359
专家分:545
注 册:2011-1-9
结帖率:100%
已结贴  问题点数:20 回复次数:19 
在这指出我的小作品的一些不足之处,交流一下,多多指教,希望能得到解决。
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

HANDLE hConsole;
void gotoxy(int x, int y)
{
    COORD coord;
    coord.X = x;
    coord.Y = y;
    SetConsoleCursorPosition(hConsole, coord);
}

int N;//N为歌曲数目
int j1=1,j2=1,j3=1,j4=1,j5=1,j6=1,j7=1;
void ma1(int n);
void ma2(int n);
void ma3(int n);
void ma4(int n);
void ma5(int n);
void ma6(int n);
void ma7(int n);

void main()
{
    system("title 歌曲融合器");
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hConsole, 0x000a);
    gotoxy(36,0);
    printf("使用说明");
    SetConsoleTextAttribute(hConsole, 0x000c);
    gotoxy(4,2);
    printf("本程序可以实现多首歌曲的融合。融合歌曲的顺序和播放顺序一致,而且歌曲音调会有所变化。融合后的歌曲播放时间的显示可能有问题,但并不会对您的使用产生影响。融合的歌曲未进行重命名之前最好都是MP3格式,否则播放时会出现不可预知的错误。");
    SetConsoleTextAttribute(hConsole, 0x000a);
    gotoxy(4,7);
    printf("首先您需要对想要实现融合的歌曲分别从001开始顺序命名。注意,命名时不需要添加扩展名(如.mp3)。融合后的文件需要您自己添加扩展名,当然也可以不添加扩展名,那样的话就不能自动被播放器识别,您就要自己选择打开方式打开。如果要实现三合一,那么就把三首歌分别命名为001、002、003即可。注意,想要进行融合的歌曲需要和本程序置于同一文件夹才有效!而且,融合后的歌曲文件将会在本程序所在的文件夹出现。");
    gotoxy(4,13);
    printf("然后请输入您所要进行融合的歌曲的数目,按回车键即可。如果您暂时还不想使用本程序,可以单击右上角的关闭按钮退出。\n");
X:  {scanf("%d",&N);
    if(N==1)
    {
        fopen("复件","wb+");
        int i;
        for(i=0;i<200;i++)
        {
            ma1(i);
            if(j1==0)
                break;
        }
    }
    if(N==2)
    {
        fopen("2合1","wb+");
        int i;
        for(i=0;i<200;i++)
        {
            ma1(i);
            if(j1==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma2(i);
            if(j2==0)
                break;
        }
    }
    if(N==3)
    {
        fopen("3合1","wb+");
        int i;
        for(i=0;i<200;i++)
        {
            ma1(i);
            if(j1==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma2(i);
            if(j2==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma3(i);
            if(j3==0)
                break;
        }
    }
    if(N==4)
    {
        fopen("4合1","wb+");
        int i;
        for(i=0;i<200;i++)
        {
            ma1(i);
            if(j1==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma2(i);
            if(j2==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma3(i);
            if(j3==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma4(i);
            if(j4==0)
                break;
        }
    }
    if(N==5)
    {
        fopen("5合1","wb+");
        int i;
        for(i=0;i<200;i++)
        {
            ma1(i);
            if(j1==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma2(i);
            if(j2==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma3(i);
            if(j3==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma4(i);
            if(j4==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma5(i);
            if(j5==0)
                break;
        }
    }
    if(N==6)
    {
        fopen("6合1","wb+");
        int i;
        for(i=0;i<200;i++)
        {
            ma1(i);
            if(j1==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma2(i);
            if(j2==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma3(i);
            if(j3==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma4(i);
            if(j4==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma5(i);
            if(j5==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma6(i);
            if(j6==0)
                break;
        }
    }
    if(N==7)
    {
        fopen("7合1","wb+");
        int i;
        for(i=0;i<200;i++)
        {
            ma1(i);
            if(j1==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma2(i);
            if(j2==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma3(i);
            if(j3==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma4(i);
            if(j4==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma5(i);
            if(j5==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma6(i);
            if(j6==0)
                break;
        }
        for(i=0;i<200;i++)
        {
            ma7(i);
            if(j7==0)
                break;
        }
    }
    if(N>7)
    {
        SetConsoleTextAttribute(hConsole, 0x000d);
        gotoxy(4,16);
        printf("对不起,由于考虑到很少有人会对7首歌以上的歌曲进行融合,所以本程序至多只支持7首歌曲的融合。由此给您造成的不便,本人深感抱歉。");
        gotoxy(4,18);
        printf("请重新输入您所要进行融合的歌曲数目。\n");
        goto X;
    }
    }
}


void ma1(int n)
{   
    FILE *fp1,*fp2;
    long i;
    char a[1000000];
    fp1=fopen("001","rb");
    if(N==1)
    {
        fp2=fopen("复件","rb+");
    }
    else if(N==2)
    {
        fp2=fopen("2合1","rb+");
    }
    else if(N==3)
    {
        fp2=fopen("3合1","rb+");
    }
    else if(N==4)
    {
        fp2=fopen("4合1","rb+");
    }
    else if(N==5)
    {
        fp2=fopen("5合1","rb+");
    }
    else if(N==6)
    {
        fp2=fopen("6合1","rb+");
    }
    else if(N==7)
    {
        fp2=fopen("7合1","rb+");
    }
    fseek(fp1,1000000*n,0);
    fseek(fp2,0,2);
    for(i=0;i<1000000;i++)
    {
        fread(&a[i],1,1,fp1);
        if(!feof(fp1))
            fwrite(&a[i],1,1,fp2);
        else
        {
            j1=0;
            break;
        }
    }
    fclose(fp1);
    fclose(fp2);
}
void ma2(int n)
{
    FILE *fp1,*fp2;
    long i;
    char a[1000000];
    fp1=fopen("002","rb");
    if(N==2)
    {
        fp2=fopen("2合1","rb+");
    }
    else if(N==3)
    {
        fp2=fopen("3合1","rb+");
    }
    else if(N==4)
    {
        fp2=fopen("4合1","rb+");
    }
    else if(N==5)
    {
        fp2=fopen("5合1","rb+");
    }
    else if(N==6)
    {
        fp2=fopen("6合1","rb+");
    }
    else if(N==7)
    {
        fp2=fopen("7合1","rb+");
    }
    fseek(fp1,1000000*n,0);
    fseek(fp2,0,2);
    for(i=0;i<1000000;i++)
    {
        fread(&a[i],1,1,fp1);
        if(!feof(fp1))
            fwrite(&a[i],1,1,fp2);
        else
        {
            j2=0;
            break;
        }
    }
    fclose(fp1);
    fclose(fp2);
}
void ma3(int n)
{   
    FILE *fp1,*fp2;
    long i;
    char a[1000000];
    fp1=fopen("003","rb");
    if(N==3)
    {
        fp2=fopen("3合1","rb+");
    }
    else if(N==4)
    {
        fp2=fopen("4合1","rb+");
    }
    else if(N==5)
    {
        fp2=fopen("5合1","rb+");
    }
    else if(N==6)
    {
        fp2=fopen("6合1","rb+");
    }
    else if(N==7)
    {
        fp2=fopen("7合1","rb+");
    }
    fseek(fp1,1000000*n,0);
    fseek(fp2,0,2);
    for(i=0;i<1000000;i++)
    {
        fread(&a[i],1,1,fp1);
        if(!feof(fp1))
            fwrite(&a[i],1,1,fp2);
        else
        {
            j3=0;
            break;
        }
    }
    fclose(fp1);
    fclose(fp2);
}
void ma4(int n)
{
    FILE *fp1,*fp2;
    long i;
    char a[1000000];
    fp1=fopen("004","rb");
    if(N==4)
    {
        fp2=fopen("4合1","rb+");
    }
    else if(N==5)
    {
        fp2=fopen("5合1","rb+");
    }
    else if(N==6)
    {
        fp2=fopen("6合1","rb+");
    }
    else if(N==7)
    {
        fp2=fopen("7合1","rb+");
    }
    fseek(fp1,1000000*n,0);
    fseek(fp2,0,2);
    for(i=0;i<1000000;i++)
    {
        fread(&a[i],1,1,fp1);
        if(!feof(fp1))
            fwrite(&a[i],1,1,fp2);
        else
        {
            j4=0;
            break;
        }
    }
    fclose(fp1);
    fclose(fp2);
}
void ma5(int n)
{
    FILE *fp1,*fp2;
    long i;
    char a[1000000];
    fp1=fopen("005","rb");
    if(N==5)
    {
        fp2=fopen("5合1","rb+");
    }
    else if(N==6)
    {
        fp2=fopen("6合1","rb+");
    }
    else if(N==7)
    {
        fp2=fopen("7合1","rb+");
    }
    fseek(fp1,1000000*n,0);
    fseek(fp2,0,2);
    for(i=0;i<1000000;i++)
    {
        fread(&a[i],1,1,fp1);
        if(!feof(fp1))
            fwrite(&a[i],1,1,fp2);
        else
        {
            j5=0;
            break;
        }
    }
    fclose(fp1);
    fclose(fp2);
}
void ma6(int n)
{
    FILE *fp1,*fp2;
    long i;
    char a[1000000];
    fp1=fopen("006","rb");
    if(N==6)
    {
        fp2=fopen("6合1","rb+");
    }
    else if(N==7)
    {
        fp2=fopen("7合1","rb+");
    }
    fseek(fp1,1000000*n,0);
    fseek(fp2,0,2);
    for(i=0;i<1000000;i++)
    {
        fread(&a[i],1,1,fp1);
        if(!feof(fp1))
            fwrite(&a[i],1,1,fp2);
        else
        {
            j6=0;
            break;
        }
    }
    fclose(fp1);
    fclose(fp2);
}
void ma7(int n)
{
    FILE *fp1,*fp2;
    long i;
    char a[1000000];
    fp1=fopen("007","rb");
    if(N==7)
    {
        fp2=fopen("7合1","rb+");
    }
    fseek(fp1,1000000*n,0);
    fseek(fp2,0,2);
    for(i=0;i<1000000;i++)
    {
        fread(&a[i],1,1,fp1);
        if(!feof(fp1))
            fwrite(&a[i],1,1,fp2);
        else
        {
            j7=0;
            break;
        }
    }
    fclose(fp1);
    fclose(fp2);
}

我的这个只能实现把完整歌曲连接在一起,但是我想要制作可以把任意多个喜欢的歌曲部分片段进行融合。还望大家多多指教。

[ 本帖最后由 观弈寒儒 于 2011-1-10 10:46 编辑 ]
搜索更多相关主题的帖子: 歌曲 
2011-01-10 10:33
li_danwang
Rank: 4
来 自:鄂州
等 级:业余侠客
帖 子:112
专家分:203
注 册:2010-11-12
得分:2 
顶一个...

没事来C一下...   
2011-01-10 10:42
观弈寒儒
Rank: 7Rank: 7Rank: 7
来 自:自 来
等 级:黑侠
帖 子:359
专家分:545
注 册:2011-1-9
得分:0 
回复 2楼 li_danwang
又看到你了,有缘啊。
关注的人不少就是没人回复啊。。。。

事件记录,值得关注! http://bbs.bccn.net/z_court.php?fid=5
2011-01-10 10:43
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
得分:2 
感谢楼主提供程序!
刚才调试下,发现如果没有相应的文件。如复件、001、2合1等出现非法错误。
建议判断打开文件时增加判断条件,如果打开不成功,停止继续程序。
例如在 void ma1(int n)
    fp1=fopen("001","rb");
    if (fp1==NULL)
    {
        printf("001 open error!\n");
        return 1;
    }
        

帮人《---》帮己
2011-01-10 10:55
观弈寒儒
Rank: 7Rank: 7Rank: 7
来 自:自 来
等 级:黑侠
帖 子:359
专家分:545
注 册:2011-1-9
得分:0 
回复 4楼 逐渐学习
嗯。
本来我想已经写了使用说明,就没必要再添加打开错误的判断了。

事件记录,值得关注! http://bbs.bccn.net/z_court.php?fid=5
2011-01-10 11:10
a343637412
Rank: 7Rank: 7Rank: 7
来 自:そ ら
等 级:黑侠
帖 子:357
专家分:620
注 册:2010-9-26
得分:2 





                                    帮忙顶啦,
2011-01-10 12:28
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
得分:2 
强大的程序!
2011-01-10 13:31
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
得分:0 
以下是引用xdzsm在2011-1-10 13:31:58的发言:

强大的程序!
一叶障目 !

我就是真命天子,顺我者生,逆我者死!
2011-01-10 17:56
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
得分:0 
一叶障目耳 !
2011-01-10 17:59
xufan123
Rank: 5Rank: 5
等 级:职业侠客
帖 子:226
专家分:318
注 册:2010-11-15
得分:2 
还是要顶下滴 
2011-01-10 18:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-330880-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.191892 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved