int t_parse(char* target, FILE* fp)
{
char cuts = ':';
char * tok;
char ln[BUFF_SIZE];
if (lnCnt == 0)
{
lnCnt = 1;
}
while (!feof(fp))
{
int i = 0;
int hop = 1;
char c;
while (hop)
{
c = fgetc(fp);
if (feof(fp))
{
if (i == 0)
{
return 0;
}
ln[i] = '\0';
hop = 0;
}
else if (c == '\n')
{
ln[i] = '\0';
hop = 0;
}
else if (i == BUFF_SIZE)
{
fprintf(stderr, "%i: Error of long line\n", lnCnt);
exit(1);
}
if (hop)
{
ln[i] = c;
}
i++;
}
if (ln[0] != '#' && ln[0] != '\t' && ln[0] != '\0')
{
tok = strtok(ln, &cuts);
if (tok == NULL)
{
fprintf(stderr, "%d: Error of invalid target\n", lnCnt);
exit(1);
}
else
{
strcpy(target, tok);
for (int j = 0; j < BUFF_SIZE; j++)
{
if (target[j] == ' ')
{
target[j] = '\0';
return lnCnt++;
}
}
return lnCnt++;
}
}
lnCnt++;
}
return 0;
}
После запуска Valgrind Условный переход или перемещение зависит от неинициализированных значений: == 2469 == при 0x10938F: t_parse (text_parsing.c: 81)
Что еще {strcpy (target,tok);
for (int j = 0; j < BUFF_SIZE; j++)
{
if (target[j] == ' ')
{
target[j] = '\0';
return lnCnt++;
}
строка 81, если (target [j] == '') Я здесь проверяю, поэтому я не уверен, почему есть утечка памяти?я выполнил команду valgrind --leak-check = да --track-originins = да --read-var-info = да 537make