proc写的程序运作后在控制台显示“ORA-01005:给出空口令;登录被拒绝”

proc写的程序运行后在控制台显示“ORA-01005:给出空口令;登录被拒绝”

执行完

我感觉是数据库什么地方没连上,但是测试代码却显示连接成功。无奈了,求大虾帮忙
上代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlca.h>
char username[10],password[10],server[10];
EXEC SQL BEGIN DECLARE SECTION;
char name1[20]={0},job1[10]={0};
int iden;
EXEC SQL END DECLARE SECTION;
void connect();
void sql();
void main()
{
connect();
sql();
EXEC SQL COMMIT RELEASE;
}
void connect()
{
printf("用户名:");
gets(username);
printf("口 令:");
gets(username);
printf("服务器:");
gets(server);
EXEC SQL CONNECT :username IDENTIFIED BY :password USING :server;
if(sqlca.sqlcode==0)
{
printf("连接成功!\n");
}
else
{  
printf("%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
}

}
void sql()
{


printf("请输入用户ID\n");
scanf("%d",&iden);
EXEC SQL SELECT name,job INTO :name1,:job1 FROM emp
WHERE id=:iden;
printf("岗位: %s,名字: %s\n",job1,name1);
}



------解决方案--------------------
printf("用户名:");
 gets(username);
 printf("口 令:");
 gets(username);
 printf("服务器:");

这个地方,2个都 是输入到用户名中了。
------解决方案--------------------
探讨
printf("用户名:");
gets(username);
printf("口 令:");
gets(username);
printf("服务器:");

这个地方,2个都 是输入到用户名中了。

------解决方案--------------------
把第二个gets(username);改为gets(password);
------解决方案--------------------
求结贴啊