这是我的代码:
#include
#include
int main(int argc, char *argv[]) {
const char **keywords;
const char **values;
char line[50];
char *prop, *val, *tmp;
int i = 0, j = 0;
FILE *creds = fopen("/path/to/file.props", "r");
keywords = malloc(5);
values = malloc(5);
while (fgets(line, LINE_SIZE, creds) != NULL) {
if (line[strlen(line) - 1] == '\n')
line[strlen(line) - 1] = '\0';
prop = line;
while(*(prop++) != '=') {
i++;
}
tmp = prop;
prop = malloc(i + 1);
strncpy(prop, line, i);
prop[i] = '\0';
keywords[j] = prop;
val = malloc(strlen(line) - strlen(prop));
strcpy(val, tmp);
values[j++] = val;
i = 0;
}
printf("%s %s %s %s %s\n", keywords[0], keywords[1], keywords[2], keywords[3], keywords[4]);
}
现在,file.props
有这样的内容:
hostaddr=127.0.0.1
port=5432
user=username
password=mypass
dbname=my_db_name
当我运行程序时,我得到:
@raddr 端口 用户密码 dbname
如果我用正确的方式注释该行values[j++] = val
并正确递增j
,则输出应该是这样的:
hostaddr 端口 用户密码 dbname 。
任何人都可以指导我并说明我的代码有什么问题吗?