typedef struct _STSTAFFINFO
{
char *pName;
int iId; /*ID*/
}stStaffInfo;
char* GetStaffNameById(int iId)
{
int i;
static stStaffInfo stTmpInfo[] =
{
{"Socrates", 1},
{"dyx1024", 2},
{"Kevin", 3},
{"Jim", 4}
};
for (i = 0; i < sizeof(stTmpInfo) / sizeof(stTmpInfo[0]); i++)
{
if (stTmpInfo[i].iId == iId)
{
return stTmpInfo[i].pName;
}
}
return "No match Name";
}
int main(int argc, char *argv[])
{
int iId = 2;
char *pName = GetStaffNameById(iId);
printf("Staff Name is : %s(id = %d)\n", pName, iId);
system("PAUSE");
return 0;
}
3、修改接口,通过出参取回。
[cpp]
#include
#include
typedef struct _STSTAFFINFO
{
char *pName;
int iId;
}stStaffInfo;
void GetStaffNameById(int iId, int iNameLen, char *pOutName)
{
int i;
stStaffInfo stTmpInfo[] =
{
{"Socrates", 1},
{"dyx1024", 2},
{"Kevin", 3},
{"Jim", 4}
};
if (NULL == pOutName)
{
return;
}
for (i = 0; i < sizeof(stTmpInfo) / sizeof(stTmpInfo[0]); i++)
{
if (stTmpInfo[i].iId == iId)
{
strncpy(pOutName, stTmpInfo[i].pName, iNameLen);
return;
}
}
strncpy(pOutName, "No match Name", iNameLen);
return;
}
int main(int argc, char *argv[])
{
int iId = 20;
char szName[21] = "\0";
GetStaffNameById(iId, 20, szName);
printf("Staff Name is : %s(id = %d)\n", szName, iId);
system("PAUSE");
return 0;
}
#include
#include
typedef struct _STSTAFFINFO
{
char *pName;
int iId;
}stStaffInfo;
void GetStaffNameById(int iId, int iNameLen, char *pOutName)
{
int i;
stStaffInfo stTmpInfo[] =
{
{"Socrates", 1},
{"dyx1024", 2},
{"Kevin", 3},
{"Jim", 4}
};
if (NULL == pOutName)
{
return;
}
for (i = 0; i < sizeof(stTmpInfo) / sizeof(stTmpInfo[0]); i++)
{
if (stTmpInfo[i].iId == iId)
{
strncpy(pOutName, stTmpInfo[i].pName, iNameLen);
return;
}
}
strncpy(pOutName, "No match Name", iNameLen);
return;
}
int main(int argc, char *argv[])
{
int iId = 20;
char szName[21] = "\0";
GetStaffNameById(iId, 20, szName);
printf("Staff Name is : %s(id = %d)\n", szName, iId);
system("PAUSE");
return 0;
}
4、通过子程序分配内存,调用者释放解决。
[cpp]
#include
#include
typedef struct _STSTAFFINFO
{
char *pName; /* */
int iId; /*ID*/
}stStaffInfo;
/* ù ID */
char* GetStaffNameById(int iId)
{
int i;
int iMaxNameLen = 20;
stStaffInfo stTmpInfo[] =
{
{"Socrates", 1},
{"dyx1024", 2},
{"Kevin", 3},
{"Jim", 4}
};
char *pRetName = (char *)malloc(iMaxNameLen);
if (NULL == pRetName)
{
exit(1);
}
for (i = 0; i < sizeof(stTmpInfo) / sizeof(stTmpInfo[0]); i++)
{
if (stTmpInfo[i].iId == iId)
{
strncpy(pRetName, stTmpInfo[i].pName, iMaxNameLen);
return pRetName;
}
}
strncpy(pRetNam