多数情况下使用printf() 。只有当你需要自己写一个printf()那样的专有函数的时候才需要vprintf()。比如你写一个自己专门的错误输出函数:
int error(char *fmt, ...){
int result
va_list args
va_start(args, fmt)
// 一些内容
va_end(args)
return result
}
应当注意到,你不能转发参数给printf,因为printf是变长参数的,而不是vprintf的单独一个va_list。然而vprintf() 函数, 只取一个合并的va_list 参数, 所以完整的版本是:
int error(char *fmt, ...){
int result
va_list args
va_start(args, fmt)
fputs("Error: ", stderr)
result = vfprintf(stderr, fmt, args)
va_end(args)
return result
}
#include <stdio.h>#include <malloc.h>
#define M 10
typedef struct bnode
{
char data
struct bnode *lchild
struct bnode *rchild
}Bnode, *BTree
/*建立二叉树*/
void creat_BTree(BTree* T)
{
char n
n=getchar()
if(n=='#') *T=NULL
else if(n=='\n') return
else
{
(*T)=(BTree)malloc(sizeof(Bnode))
(*T)->data=n
creat_BTree(&(*T)->lchild)
creat_BTree(&(*T)->rchild)
}
}
/*前序遍历*/
void r_preorder(BTree T)
{
if(T)
{
printf("%c",T->data)
r_preorder(T->lchild)
r_preorder(T->rchild)
}
}
/*后序遍历*/
void r_posorder(BTree T)
{
if(T)
{
r_posorder(T->lchild)
r_posorder(T->rchild)
printf("%c",T->data)
}
}
/*层次遍历*/
void r_levelorder(BTree T)
{
BTree q[1024]
BTree p
int front=0,rear=0
if(T)
{
q[rear]=T
rear=(rear+1)%M
}
while(front!=rear)
{
p=q[front]
printf("%c ",p->data)
if(p->lchild)
{
q[rear]=p->lchild
rear=(rear+1)%M
}
if(p->rchild)
{
q[rear]=p->rchild
rear=(rear+1)%M
}
front = (front+1)%M
}
}
int main()
{
BTree T
T=NULL
int select
while(1)
{
printf("\n请选择要进行的 *** 作:\n")
printf(" 1 创建二叉树\n")
printf(" 2 前序遍历\n")
printf(" 3 后序遍历\n")
printf(" 4 层次遍历\n")
printf(" 5 结束程序\n")
printf("=========================\n")
scanf("%d",&select)
getchar()
switch (select)
{
case 1:
{
printf("请按前序次序输入各结点的值,以#表示空树(输入时可连续输入)\n")
creat_BTree(&T)
break
}
case 2:
{
if(!T) printf("未建树,请先执行1 *** 作建树!\n")
else r_preorder(T)
break
}
case 3:
{
if(!T) printf("未建树,请先执行1 *** 作建树!\n")
else r_posorder(T)
break
}
case 4:
{
if(!T) printf("未建树,请先执行1 *** 作建树!\n")
else r_levelorder(T)
break
}
default:
}
}
}
因为你在VC下编写的程序用到了VC的函数库,比如socket这个套接口函数在VC中的头文件时WinSock.h而到了Linux系统下的编辑器g++中
就是netinet/in.h了
当然不会通过编译。而且VC编译器把你得程序生成目标文件
连接函数库这些过程都给你做好了。但是在别的编辑器下
比如g++这些都要你自己来写makefile文件来完成。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)