נשלח בתאריך: 09 October 2007 בשעה 15:24 | | IP רשוּם
|
|
|
|
אני משתמש בפונקציה שמייצרת קובץ ini כאשר הפונקציה אמורה לזהות את המשתנה שצריך עדכון ואז לדרוס אותו עם משתנה בעל ערך עדכני. אבל במקום לדרוס את המשתנה הנכון היא דורסת את השורה הבאה.
הפונקציה:
int NewWriteCfg(FILE *fp, char *varname, char *var) { char line[CONFIG_LINE_LENGTH], *p, str[256], r_str[256]; int linenum = 0, i, count, cnt; fseek(fp, 0, SEEK_SET); for (;;) { linenum++; fgets(line, sizeof(line), fp);
line[strlen(line)-1] = 0; /* remove ending \n */ if (feof(fp)){ fprintf(fp,"%s=%s\n", varname, var); return 2; } if (!line[0]) /* empty line */ continue; if (line[0] == ';' || line[0] == '#') /* comment line */ continue; p = (char *)strchr(line, '='); if (!p) return -linenum; *p = 0; /* make variable name a string */ if (strcasecmp(line, varname)) continue; p++; fprintf(fp,"%s=%s\n", varname, var); return 0; } }
התוצאה המתבקשת:
currentTemperature=89 FanA_status="off" FanB_status="off"
התוצאה בשטח:
currentTemperature=89 currentTemperature=87 _status="off" FanA_status="off" FanB_status="off"
|