C语言判断编码器

C语言判断编码器,第1张

不管前面有没有if else 什么的,只要两处代码都是if(b==0)那就足以肯定做的是一样的判断,你不过是嵌套了判断而已,结果还是做同样的判断,

真搞笑啊,还说我没理解,我确实无法理解做同样的判断有何意义,

“else已经说明现在的状态和上一个if状态相反了”既然已经相反了,那b肯定就不等于0了,你再跟一句if(b==0)绝对不会为真的

aup0: if(a==0)

{

if(b==0)//和下面的条件是一样的

{

if(b==0)

{

goto aup0;

}

else

goto subbdisplay0;

}

else

if(b==0)//和上面的条件是一样的

/////////////////////////////////////////////////////////////

goto adddisplay0;

}

else

if(b==0)//和下面的条件是一样的

{

if(b==0)

{

goto adow0;

}

else

goto adddisplay0;

}

else

if(b==0)//和上面的条件是一样的

{

goto subbdisplay0;

}

else

goto adow0;

视频播放器是一种解码器。

解码器是对已编码的数字视频进行还原解码操作的程序(视频播放器)或设备。比如系统安装了real编码器那就能将其他格式文件转换成rm或rmvb格式,如果安装了real解码器那就能播放rm或rmvb格式文件。

这已经不是简单C语言能够编写出来的,它的核心是解码编码的算法。

1,如果你只是想用某些功能,不要自己编了。找一个吧。

2,非要自己编的话,要站在巨人的肩膀上。很多种编码都有开源的解码器了。可以利用他们。或者利用开源的软件,在人家基础上开发。

3,如果你认为你有希望改进压缩解压算法,得到更好的效果,更省地方,更有效的解压算法。那首先要做的是了解各种编码的压缩解压算法。创造一种更好的算法。

下面的Unix下函数可以会帮到你

getenv(取得环境变量内容

相关函数 putenv,setenv,unsetenv

表头文件 #include<stdlibh>

定义函数 char getenv(const char name);

函数说明 getenv()用来取得参数name环境变量的内容。参数name为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为name=value。

返回值 执行成功则返回指向该内容的指针,找不到符合的环境变量名称则返回NULL。

范例 #include<stdlibh>

mian()

{

char p;

if((p = getenv(“USER”)))

printf(“USER=%s\n”,p);

}

执行 USER = root

putenv(改变或增加环境变量)

相关函数 getenv,setenv,unsetenv

表头文件 #include4<stdlibh>

定义函数 int putenv(const char string);

函数说明 putenv()用来改变或增加环境变量的内容。参数string的格式为name=value,如果该环境变量原先存在,则变量内容会依参数string改变,否则此参数内容会成为新的环境变量。

返回值 执行成功则返回0,有错误发生则返回-1。

错误代码 ENOMEM 内存不足,无法配置新的环境变量空间。

范例 #include<stdlibh>

main()

{

char p;

if((p = getenv(“USER”)))

printf(“USER =%s\n”,p);

putenv(“USER=test”);

printf(“USER+5s\n”,getenv(“USER”));

}

执行 USER=root

USER=root

setenv(改变或增加环境变量)

相关函数 getenv,putenv,unsetenv

表头文件 #include<stdlibh>

定义函数 int setenv(const char name,const char value,int overwrite);

函数说明 setenv()用来改变或增加环境变量的内容。参数name为环境变量名称字符串。

参数 value则为变量内容,参数overwrite用来决定是否要改变已存在的环境变量。如果overwrite不为0,而该环境变量原已有内容,则原内容会被改为参数value所指的变量内容。如果overwrite为0,且该环境变量已有内容,则参数value会被忽略。

返回值 执行成功则返回0,有错误发生时返回-1。

错误代码 ENOMEM 内存不足,无法配置新的环境变量空间

范例 #include<stdlibh>

main()

{

char p;

if((p=getenv(“USER”)))

printf(“USER =%s\n”,p);

setenv(“USER”,”test”,1);

printf(“USER=%s\n”,getenv(“USEr”));

unsetenv(“USER”);

printf(“USER=%s\n”,getenv(“USER”));

}

执行 USER = root

USER = test

USER = (null)

//哈夫曼编码

#include<stdioh>

#include<stdlibh>

#include<stringh>

#include<conioh>

#define TOTAL_LEAF 8 //叶子数目根据需要设定

#define TOTAL_NODE 2TOTAL_LEAF-1 // Huffman 树中结点总数

typedef struct

{

int weight;

int lchild;

int rchild;

int parent;

}htnode;

typedef htnode huffmantree[TOTAL_NODE+1];// huffmantree是结构数组类型,其0号单元不用,存储哈夫曼树

typedef struct

{

char ch;

char code[TOTAL_LEAF+1];

}codenode;

typedef codenode huffmancode[TOTAL_LEAF+1];

void inithuffmantree(huffmantree ht) //初始化哈夫曼树函数inithuffmantree()

{

int i;

for(i=0;i<=TOTAL_NODE;i++)

{

ht[i]weight=0;

ht[i]lchild=ht[i]rchild=ht[i]parent=0;

}

}

void inputweight(huffmantree ht) //输入权值函数

{

int i;

for(i=1;i<=TOTAL_LEAF;i++)

{

printf("请输入第%d个权值: ",i);

scanf("%d",&ht[i]weight);

}

}

void selectmin(huffmantree ht, int i, int p1, int p2)

{

int j,min1,min2; // min1,min2分别是最小权值和次小权值

min1=min2=32767;

p1=p2=0;

for(j=1;j<=i;j++)

{

if(ht[j]parent==0) // j 为根结点

if(ht[j]weight<min1||min1==32767)

{

if(min1!=32767)

{

min2=min1;

p2=p1;

}

min1=ht[j]weight;

p1=j;

}

else if(ht[j]weight<min2||min2==32767)

{

min2=ht[j]weight;

p2=j;

}

}

}

void createhuffmantree(huffmantree ht) //构造huffman树,ht[m]为其根结点

{

int i,p1,p2;

inithuffmantree(ht);

inputweight(ht); //输入叶子权值至ht [1n]的weight域

for(i=TOTAL_LEAF+1;i<=TOTAL_NODE;i++) //共进行n-1次合并,新结点依次存于ht[i]中

{

selectmin(ht,i-1,&p1,&p2); //在ht [1 i-1]中选择两个权值最小的根结点,其序号分别为p1和p2

ht[p1]parent=ht[p2]parent=i;

ht[i]lchild=p1;

ht[i]rchild=p2;

ht[i]weight=ht[p1]weight+ht[p2]weight;

}

}

void huffmancodes(huffmantree ht,huffmancode hcd) //根据huffman树ht求huffman编码

{

int c,p,i; // c和p分别指示 ht中孩子和双亲的位置

char cd[TOTAL_LEAF+1];

int start; //指示编码在cd 中的起始位置

cd[TOTAL_LEAF]='\0';

getchar();

printf("请输入字符");

for(i=1;i<=TOTAL_LEAF;i++) //依次求叶子ht [i]的编码

{

hcd[i]ch=getchar(); // 读入叶子ht [i]对应的字符

start=TOTAL_LEAF;

c=i; //从叶子ht [i]开始上溯

while((p=ht[c]parent)!=0) // 直至上溯到ht [ c]是树根为止

{

cd[--start]=(ht[p]lchild==c)'0':'1'; //若ht [ c]是ht[p]的左孩子,则生成代码0,否则生成代码1

c=p;

}

strcpy(hcd[i]code,&cd[start]); //复制编码位串

}

printf("\n");

for(i=1;i<=TOTAL_LEAF;i++)

printf("第%d个字符%c的编码为%s\n",i,hcd[i]ch,hcd[i]code);

}

void main()

{

huffmantree t;

huffmancode h;

printf("\n请输入%d个权值\n",TOTAL_LEAF);

createhuffmantree(t);

huffmancodes(t,h);

}

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/3383120.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-02-25
下一篇2024-02-25

发表评论

登录后才能评论

评论列表(0条)

    保存