我面臨着下面的代碼:遞增char值(大於一個字母)
int get_config(const char *key, char *value) {
FILE *fp = NULL;
char s[100];
char *ret1 = NULL;
char *ret2 = NULL;
fp = fopen(CONFIG_FILE_PATH, "r");
if (fp == NULL) {
perror(CONFIG_FILE_PATH);
return FALSE;
}
while (fgets(s, 100, fp) != NULL) {
//printf("line=%s", s);
ret1 = strstr(s, key);
if (ret1 != NULL) {
ret1 = strstr(s, "=");
if (ret1 != NULL) {
ret1++;
ret2 = strstr(s, "\n");
strncpy(value, ret1, ret2 - ret1);
//printf("ret1=%p ret2=%p\n", ret1,ret2);
value[ret2 - ret1] = 0x0;
printf("config key=%s value=%s\n", key, value);
fclose(fp);
fp = NULL;
ret1 = NULL;
ret2 = NULL;
return TRUE;
}
}
}
我很難理解什麼ret1++
一樣。如果我正確理解了strstr()
,則ret1 = strstr(s, "=");
ret1將包含s後面的=符號後面的所有內容。
讓我們假設這不是一個數字,而是一個「價值」字,導致ret1 = value
這對於ret1++
意味着什麼? 也許我對CONFIG_FILE_PATH的假設是錯誤的,並且一個數字總是等於等號。
旁註: 我只是希望,我知道什麼CONFIG_FILE_PATH看起來像。但作爲#define CONFIG_FILE_PATH "/etc/config/duvs.conf"
但是這個路徑可能位於設備上,這個程序是爲...寫的:/
你在說什麼? 'ret1'指向'='後面的C字符串(可能是空字符串)或者等於NULL。 –
Mybe我很困惑,因爲這裏的描述: https://www.tutorialspoint。com/c_standard_library/c_function_strstr.htm 在下面提供的示例中,'ret'等於'Point',這導致我認爲,在我的情況下'ret1'也等於一個字符串。因此,讓我不明白,'ret1 ++'是多少有道理的。 :) – user3554329