我正在尝试用 C 编写套接字程序。当我这样做时,我的整个代码都可以正常工作
#define PORT "3333"
但不是
#define PORT getParameter("setting.ini","PORT")
基本上,getParameter 只是打开 setting.ini 文件并通读,查找变量及其值,然后返回它。我这样做的唯一原因是我不希望端口号在我的代码中被硬编码。我有:
“ai_socktype 不支持 Servname”
我不知道是什么导致了这个错误。有任何想法吗?
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char *substring(char* str, int start, int length) {
char *newString = (char *)malloc(length * sizeof(char)+1);
int i, x = 0;
int end=start+length-1;
for(i = start ; i <= end; i++)
newString[x++] = str[i];
newString[x] = '\0';
return newString;
}
char *getParameter(char *fName, char *pName)
{
FILE *fr;
char line[80];
int i;
fr = fopen (fName, "r"); /* open the file for reading */
while(fgets(line, 80, fr) != NULL)
{
i = strcspn (line,"=");
if(strcmp(pName,substring(line,0,i))==0){
char *value = substring(line,i+1,strlen(line)-i);
fclose(fr);
return value;
}
}
fclose(fr);
}
int main(void){
char *PORT = getParameter("setting.ini","PORT");
const int BACKLOG = atoi(getParameter("setting.ini","BACKLOG"));
printf("%s\n",PORT);
printf("%d\n",BACKLOG);
return 0;
}